#include "../makelib/botnet.h" #include #include #include #include #include char *g_botname, *g_channel, *g_server; void ProcOnConnected(BN_PInfo I,const char HostName[]) { char *nick = g_botname, *user = "echobot", *name = "Echo Bot 5"; printf("Event Connected : (%s)\n",HostName); BN_EnableFloodProtection(I,100,1000,60); BN_Register(I, nick, user, name); } void ProcOnRegistered(BN_PInfo I) { printf("Event Registered\n"); BN_SendJoinMessage(I, g_channel, NULL); } void ProcOnJoin(BN_PInfo I, const char* params) { printf("Event OnJoin: (%s)", params); BN_SendPrivateMessage(I, "manager", "register"); } void ProcOnChannelTalk(BN_PInfo I, const char* channel, const char* who, const char* msg) { int namelen = strlen(g_botname); const char* retmsg; printf("Channel Talk Event:\nWho:(%s)\nChannel:(%s)\nMessage:(%s)\n", who, channel, msg); if ((strncmp(g_botname, msg, namelen) == 0) && (msg[namelen] == ',')) { retmsg = &(msg[namelen + 1]); while (!isalnum(*retmsg)) { retmsg++; } BN_SendPrivateMessage(I, "manager", retmsg); } } void ProcOnPrivateTalk(BN_PInfo I,const char Who[],const char Whom[],const char Msg[]) { char nick[255]; BN_ExtractNick(Who, nick, 255); BN_SendPrivateMessage(I, nick, Msg); } int main(int argc, char *argv[]) { BN_TInfo Info; if (argc < 4) { fprintf(stderr, "Usage:\n%s \n", argv[0]); exit(1); } g_botname = argv[3]; g_channel = argv[2]; g_server = argv[1]; memset(&Info, 0, sizeof(Info)); Info.CB.OnConnected = ProcOnConnected; Info.CB.OnRegistered = ProcOnRegistered; Info.CB.OnChannelTalk = ProcOnChannelTalk; Info.CB.OnPrivateTalk = ProcOnPrivateTalk; if (!BN_Connect(&Info, g_server, 6667, 0)) { printf("Disconnected"); } return 0; }