00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "module.h"
00017
00018 int do_assign(User * u);
00019 void myBotServHelp(User * u);
00020
00027 int AnopeInit(int argc, char **argv)
00028 {
00029 Command *c;
00030
00031 moduleAddAuthor("Anope");
00032 moduleAddVersion("$Id: bs_assign.c 1265 2007-08-26 15:33:06Z geniusdex $");
00033 moduleSetType(CORE);
00034 c = createCommand("ASSIGN", do_assign, NULL, BOT_HELP_ASSIGN, -1, -1,
00035 -1, -1);
00036 moduleAddCommand(BOTSERV, c, MOD_UNIQUE);
00037
00038 moduleSetBotHelp(myBotServHelp);
00039
00040 return MOD_CONT;
00041 }
00042
00046 void AnopeFini(void)
00047 {
00048
00049 }
00050
00051
00056 void myBotServHelp(User * u)
00057 {
00058 notice_lang(s_BotServ, u, BOT_HELP_CMD_ASSIGN);
00059 }
00060
00066 int do_assign(User * u)
00067 {
00068 char *chan = strtok(NULL, " ");
00069 char *nick = strtok(NULL, " ");
00070 BotInfo *bi;
00071 ChannelInfo *ci;
00072
00073 if (readonly)
00074 notice_lang(s_BotServ, u, BOT_ASSIGN_READONLY);
00075 else if (!chan || !nick)
00076 syntax_error(s_BotServ, u, "ASSIGN", BOT_ASSIGN_SYNTAX);
00077 else if (!(bi = findbot(nick)))
00078 notice_lang(s_BotServ, u, BOT_DOES_NOT_EXIST, nick);
00079 else if (bi->flags & BI_PRIVATE && !is_oper(u))
00080 notice_lang(s_BotServ, u, PERMISSION_DENIED);
00081 else if (!(ci = cs_findchan(chan)))
00082 notice_lang(s_BotServ, u, CHAN_X_NOT_REGISTERED, chan);
00083 else if (ci->flags & CI_VERBOTEN)
00084 notice_lang(s_BotServ, u, CHAN_X_FORBIDDEN, chan);
00085 else if ((ci->bi) && (stricmp(ci->bi->nick, nick) == 0))
00086 notice_lang(s_BotServ, u, BOT_ASSIGN_ALREADY, ci->bi->nick, chan);
00087 else if ((ci->botflags & BS_NOBOT)
00088 || (!check_access(u, ci, CA_ASSIGN) && !is_services_admin(u)))
00089 notice_lang(s_BotServ, u, PERMISSION_DENIED);
00090 else {
00091 if (ci->bi)
00092 unassign(u, ci);
00093 ci->bi = bi;
00094 bi->chancount++;
00095 if (ci->c && ci->c->usercount >= BSMinUsers) {
00096 bot_join(ci);
00097 }
00098 notice_lang(s_BotServ, u, BOT_ASSIGN_ASSIGNED, bi->nick, ci->name);
00099 send_event(EVENT_BOT_ASSIGN, 2, ci->name, bi->nick);
00100 }
00101 return MOD_CONT;
00102 }