use the correct channel ID in cmd_unregister
[NeonServV5.git] / cmd_neonserv_unregister.c
1
2 /*
3 * argv[0] - channel
4 */
5 static CMD_BIND(neonserv_cmd_unregister) {
6     MYSQL_RES *res;
7     MYSQL_ROW row;
8     char *channel = argv[0];
9     if(!is_valid_chan(channel)) {
10         reply(getTextBot(), user, "NS_INVALID_CHANNEL_NAME", argv[0]);
11         return;
12     }
13     int chanid;
14     printf_mysql_query("SELECT `channel_id` FROM `channels` WHERE `channel_name` = '%s'", escape_string(channel));
15     res = mysql_use();
16     if ((row = mysql_fetch_row(res)) != NULL) {
17         chanid = atoi(row[0]);
18     } else {
19         reply(getTextBot(), user, "NS_UNREGISTER_NOT_REGISTERED", argv[0], client->user->nick);
20         return;
21     }
22     printf_mysql_query("SELECT `botid`, `bot_channels`.`id` FROM `bot_channels` LEFT JOIN `bots` ON `bot_channels`.`botid` = `bots`.`id` WHERE `chanid` = '%d' AND `botclass` = '%d'", chanid, client->botid);
23     res = mysql_use();
24     if ((row = mysql_fetch_row(res)) == NULL) {
25         reply(getTextBot(), user, "NS_UNREGISTER_NOT_REGISTERED", argv[0], client->user->nick);
26         return;
27     }
28     int botid = atoi(row[0]);
29     struct ClientSocket *bot;
30     for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) {
31         if(bot->clientid == botid)
32             break;
33     }
34     if(bot) {
35         putsock(bot, "PART %s :Channel unregistered.", channel);
36     }
37     printf_mysql_query("DELETE FROM `bot_channels` WHERE `id` = '%s'", row[1]);
38     reply(getTextBot(), user, "NS_UNREGISTER_DONE", channel);
39 }