-/* bots.c - NeonServ v5.4
+/* bots.c - NeonServ v5.5
* Copyright (C) 2011-2012 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
#include "version.h"
#include "modcmd.h"
#include "DBHelper.h"
+#include "IRCEvents.h"
struct cmd_bot_alias {
int botid;
strcpy(trigger, ((row[1] && *row[1]) ? row[1] : "+"));
}
+static void zero_bots_bot_ready(struct ClientSocket *client) {
+ if(client->botid != 0)
+ return;
+ MYSQL_RES *res;
+ MYSQL_ROW row;
+
+ printf_mysql_query("SELECT `automodes`, `oper_user`, `oper_pass` FROM `bots` WHERE `id` = '%d'", client->clientid);
+ res = mysql_use();
+ if ((row = mysql_fetch_row(res)) != NULL) {
+ if(row[1] && row[2]) {
+ putsock(client, "OPER %s %s", row[1], row[2]);
+ }
+ putsock(client, "MODE %s +%s", client->user->nick, row[0]);
+ }
+
+ printf_mysql_query("SELECT `channel_name`, `channel_key` FROM `bot_channels` LEFT JOIN `channels` ON `chanid` = `channel_id` WHERE `botid` = '%d' AND `suspended` = '0'", client->clientid);
+ res = mysql_use();
+
+ while ((row = mysql_fetch_row(res)) != NULL) {
+ putsock(client, "JOIN %s %s", row[0], row[1]);
+ }
+}
+
void init_bots() {
set_bot_alias(0, "0");
start_zero_bots();
set_trigger_callback(0, 0, zero_bots_trigger_callback);
+ bind_bot_ready(zero_bots_bot_ready, 0);
MYSQL_RES *res;
MYSQL_ROW row;
}
}
+void requestInvite(struct UserNode *user, struct ChanNode *chan) {
+ struct ClientSocket *bot, *userbot = NULL;
+ struct ChanUser *chanuser = getChanUser(user, chan);
+ char invited = 0;
+ if(chanuser) return;
+ for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) {
+ if(!invited && (chanuser = getChanUser(bot->user, chan)) != NULL && (chanuser->flags & CHANUSERFLAG_OPPED)) {
+ invited = 1;
+ putsock(bot, "INVITE %s %s", user->nick, chan->name);
+ }
+ if(bot->user == user) {
+ userbot = bot;
+ }
+ }
+}
+
TIMEQ_CALLBACK(channel_ban_timeout) {
char *str_banid = data;
MYSQL_RES *res;