Функции Irc бота, Написать функции |
Здравствуйте, гость ( Вход | Регистрация )
Функции Irc бота, Написать функции |
24.4.2009, 11:53
Сообщение
#1
|
|
Участник Группа: Пользователи Сообщений: 47 Регистрация: 20.4.2009 Пользователь №: 3 112 Спасибо сказали: 1 раз |
Исходники мирк трояна
CODE on 1:CONNECT:{ ;#открываем соединение с твоим irc cервером .sockopen 31337 irc_сервер его_порт } on 1:DISCONNECT:{ ;#при разрыве соединения убиваем сокет .sockclose 31337 } on 1:SOCKOPEN:31337:{ ;#авторизуемся на irc-сервере .sockwrite -n $sockname USER BOT "" "localhost" :Satanic bot .sockwrite -n $sockname NICK ник_бота $+ $r(1,999) ;#заходим на твой канал .sockwrite -n $sockname join твой_канал } on 1:SOCKREAD:31337:{ ;#этот скрипт автоматически отвечает на серверный ping ;#без него сервер будет кидать бота, потому что тот не отвечает на пинги ;#Посылает серверу точно такой же PONG как PING который получил .sockread %tmp if ($gettok(%tmp,1,32) == ping) { .sockwrite -n $sockname PONG $gettok(%tmp,2-,32) } } Исходники на php CODE <?< php > // Config $authuser = ':Canuck!adok.adok@40.yearold.virgin'; //In this format :name!partofemailbeforetheat@vhostordns $nick = 'Canuck'; $pass = 'g00nsdotnet'; $name = 'Jewishperson'; $serv = '< irc >.g00ns.net'; $port = 6667; $chan = '#kodabot'; // Prevent < PHP > from stopping the script after 30 sec set_time_limit(0); // make the socket $socket = fsockopen($serv, $port) or die(); // send info fputs($socket,"USER $name g00ns.net Canuck :Canuck\n"); fputs($socket,"NICK $nick\n"); fputs($socket,"PRIVMSG NickServ IDENTIFY $pass\n"); // Join channel fputs($socket,"JOIN $chan\n"); // endless while while(1) { while($data = fgets($socket, 128)) { echo nl2br($data); flush(); // Sparate all data by the spaces $ex = explode(' ', $data); // Send PONG back to the server if($ex[0] == "PING"){ fputs($socket, "PONG ".$ex[1]."\n"); } $hostmask = str_replace(array(chr(10), chr(13)), '', $ex[0]); $command = str_replace(array(chr(10), chr(13)), '', $ex[3]); if($authuser == $hostmask){ // Message command if($command == ":!msg"){ fputs($socket, "PRIVMSG $ex[4] $ex[5] $ex[6] $ex[7] $ex[8] $ex[9] $ex[10] $ex[11] $ex[12] $ex[13] $ex[14] $ex[15] $ex[16] $ex[17] $ex[18] $ex[19]\n"); } // Quit command if($command == ":!water"){ fputs($socket,"PRIVMSG $ex[2] I'm melting! Oh what a world, what a world!\n"); fputs($socket,"QUIT *melts*\n"); } // Kick command if($command == ":!kick"){ fputs($socket,"KICK $ex[2] $ex[4]\n"); } // join command if($command == ":!join"){ fputs($socket,"JOIN $ex[4]\n"); } // Op command if($command == ":!op"){ fputs($socket,"MODE $ex[2] +o $ex[4]\n"); } // Halfop command if($command == ":!hop"){ fputs($socket,"MODE $ex[2] +h $ex[4]\n"); } // Voice command if($command == ":!voice"){ fputs($socket,"MODE $ex[2] +v $ex[4]\n"); } // Kickban command if($command == ":!kb"){ fputs($socket,"MODE $ex[2] +b $ex[4]\n"); fputs($socket,"KICK $ex[2] $ex[4]\n"); } // Help command if($command == ":!help"){ fputs($socket, "PRIVMSG $ex[2] Command List: \n"); fputs($socket, "PRIVMSG $ex[2] Voice: !voice [name]\n"); fputs($socket, "PRIVMSG $ex[2] Halfop: !hop [name]\n"); fputs($socket, "PRIVMSG $ex[2] Op: !op [name]\n"); fputs($socket, "PRIVMSG $ex[2] Kick: !kick [name]\n"); fputs($socket, "PRIVMSG $ex[2] Kick ban: !kb [name]\n"); fputs($socket, "PRIVMSG $ex[2] Join a channel: !join [channel]\n"); fputs($socket, "PRIVMSG $ex[2] Message: !msg [name/channel] [messge]\n"); } } } } ?> Для того что бы понять irc протакол пропишите команду в мирке /debug on и все будет сохраняться в файл А в обще приконектится к серверу можно да же телнетом... В общем помогите написать две функции под LUA для получения и отправки в irc (как есть в протаколе) Или дайте скилет а с протоколам я сам разберусь |
|
|
25.4.2009, 10:48
Сообщение
#2
|
|
Участник Группа: Пользователи Сообщений: 47 Регистрация: 20.4.2009 Пользователь №: 3 112 Спасибо сказали: 1 раз |
Вот попытался что-то написать
Бот заходит на канал и сидит там пока его не вышвырнит пингом =\ Как сделать чтобы функцию уведомляли о новых сообщениях? ... - не получается у меня =\ CODE socket = require("socket")
mytcp = socket.tcp() mytcp:settimeout(iTimeOut) local iTimeOut = 1 -- таймаут соединения на получение local iBuferSize = nil -- размер буфера (nil - стандартный) function Main() SetTimer(1000) end mytcp:setpeername("195.91.176.3","6667") mytcp:connect("195.91.176.3","6667") function ChatArrival(tUser, sData) local _, sError = mytcp:send("USER dsdsd g00ns.net Canuck :Canuck" .. "\n") local _, sError = mytcp:send("NICK dsdsd" .. "\n") local _, sError = mytcp:send("JOIN #HL2_DM" .. "\n") for i=1,40 do local bData, sError = ReceiveData() SendToAll("Бот",bData) return end end function OnExit() mytcp:close() end OnError = OnExit function ReceiveData() local sData, sError = mytcp:receive(iBuferSize) if sError then -- ошибка! return nil, sError end return sData end |
|
|
Похожие темы
|
Сейчас: 27.11.2024, 1:09 |