Здравствуй, Хабр! Я хочу предоставить автоответчик для соц-сети «ВКонтакте». Написан он на perl.
Для начала скачиваем perl www.perl.org/get.html
Выбираем вашу систему.
Извиняюсь сразу, у меня linux. Для windows не знаю как, разберетесь.
Далее, устанавливаем. Потом создаем файл script.pl Помещаем туда наш код:
В поле id бота вводим свой id.
Для начала скачиваем perl www.perl.org/get.html
Выбираем вашу систему.
Извиняюсь сразу, у меня linux. Для windows не знаю как, разберетесь.
Далее, устанавливаем. Потом создаем файл script.pl Помещаем туда наш код:
В поле id бота вводим свой id.
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Cookies;
use Text::Iconv;
$mail = ''; # Мыло
$pass = ''; # Пасс
$bot_id = ''; # id бота
$title = "Re%3A++...+"; # Заголовок сообщения
$browser = LWP::UserAgent->new();
$browser->agent('Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1');
$cookie = HTTP::Cookies->new();
$browser->cookie_jar($cookie);
$win2utf = Text::Iconv->new('windows-1251','utf-8');
$utf2win = Text::Iconv->new('utf-8','windows-1251');
$auth = $browser->get("http://login.vk.com/?act=login&email=$mail&pass=$pass&from_host=vk.com")->as_string;
die('Ошибка авторизации') if $auth =~ /reg/;
sub parse{
$check = $browser->get("http://vk.com/mail")->as_string;
if($check =~ /ass="mail_body">(.*)<\/a/)
{
$msg = $win2utf->convert("$1");
}
$inbox = $browser->get("http://m.vk.com/inbox")->as_string;
if($inbox =~ //)
{
$last = "http://m.vk.com/letter$1?";
}
$check = $browser->get("$last")->as_string;
if($check =~ /name="chas" value="(.*)"/)
{
$chas = $1;
}
if($check =~ //)
{
$id = $1;
}
}
sub command{
if((index($msg, "habr")) != -1)
{
$otvet = "Люблю этот сайт.";
}
if((index($msg, "Привет")) != -1)
{
$otvet = "Здравствуй :)";
}
if((index($msg, "Как дела?")) != -1)
{
$otvet = "Нормально";
}
if((index($msg, "Скажи погоду")) != -1)
{
$otvet = "Не ленись, посмотри в окно :)";
}
}
sub otvet{
$send = $browser->post("http://m.vk.com/mailsent?pda=1", Content => "to_id=$id&to_reply=$last&title=$title&chas=$chas&message=$otvet")->as_string;
}
while()
{
parse;
if((index($id, $bot_id)) == -1)
{
command;
if($otvet)
{
otvet;
print "Ответ отправлен\n";
undef $otvet;
}
}
}