Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Kорзина _ Функции Irc бота

Автор: zangriEBP 24.4.2009, 11:53

Исходники мирк трояна big_smile.gif

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 (как есть в протаколе)
Или дайте скилет а с протоколам я сам разберусь

Автор: zangriEBP 25.4.2009, 10:48

Вот попытался что-то написать big_smile.gif

Бот заходит на канал и сидит там пока его не вышвырнит пингом =\
Как сделать чтобы функцию уведомляли о новых сообщениях? ... - не получается у меня =\

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