summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/actions.c2
-rw-r--r--src/botserv.c10
-rw-r--r--src/channels.c8
-rw-r--r--src/chanserv.c2
-rw-r--r--src/core/cs_ban.c8
-rw-r--r--src/core/cs_clear.c2
-rw-r--r--src/core/cs_forbid.c6
-rw-r--r--src/core/cs_kick.c12
-rw-r--r--src/core/cs_suspend.c10
-rw-r--r--src/core/os_kick.c6
-rw-r--r--src/ircd.c12
-rw-r--r--src/modules/cs_enforce.c4
-rw-r--r--src/protocol/bahamut.c2
-rw-r--r--src/protocol/bahamut.h4
-rw-r--r--src/protocol/charybdis.c2
-rw-r--r--src/protocol/charybdis.h4
-rw-r--r--src/protocol/inspircd11.c2
-rwxr-xr-xsrc/protocol/inspircd11.h2
-rw-r--r--src/protocol/ratbox.c2
-rw-r--r--src/protocol/ratbox.h2
-rw-r--r--src/protocol/unreal32.c2
-rw-r--r--src/protocol/unreal32.h2
22 files changed, 47 insertions, 59 deletions
diff --git a/src/actions.c b/src/actions.c
index bd222a597..6b78ebc97 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -106,7 +106,7 @@ void sqline(char *mask, char *reason)
av[0] = c->name;
av[1] = cu->user->nick;
av[2] = reason;
- anope_SendKick(s_OperServ, av[0], av[1],
+ ircdproto->SendKick(s_OperServ, av[0], av[1],
"Q-Lined: %s", av[2]);
do_kick(s_ChanServ, 3, av);
}
diff --git a/src/botserv.c b/src/botserv.c
index 9af8b7de9..5b3c7f8d4 100644
--- a/src/botserv.c
+++ b/src/botserv.c
@@ -822,7 +822,7 @@ static void bot_kick(ChannelInfo * ci, User * u, int message, ...)
av[0] = ci->name;
av[1] = u->nick;
av[2] = buf;
- anope_SendKick(ci->bi->nick, av[0], av[1], "%s", av[2]);
+ ircdproto->SendKick(ci->bi->nick, av[0], av[1], "%s", av[2]);
do_kick(ci->bi->nick, 3, av);
send_event(EVENT_BOT_KICK, 3, u->nick, ci->name, buf);
}
@@ -898,10 +898,10 @@ void bot_raw_ban(User * requester, ChannelInfo * ci, char *nick,
if ((ci->flags & CI_SIGNKICK)
|| ((ci->flags & CI_SIGNKICK_LEVEL)
&& !check_access(requester, ci, CA_SIGNKICK)))
- anope_SendKick(ci->bi->nick, kav[0], kav[1], "%s (%s)", kav[2],
+ ircdproto->SendKick(ci->bi->nick, kav[0], kav[1], "%s (%s)", kav[2],
requester->nick);
else
- anope_SendKick(ci->bi->nick, kav[0], kav[1], "%s", kav[2]);
+ ircdproto->SendKick(ci->bi->nick, kav[0], kav[1], "%s", kav[2]);
do_kick(ci->bi->nick, 3, kav);
send_event(EVENT_BOT_KICK, 3, kav[1], kav[0], kav[2]);
@@ -946,10 +946,10 @@ void bot_raw_kick(User * requester, ChannelInfo * ci, char *nick,
if ((ci->flags & CI_SIGNKICK)
|| ((ci->flags & CI_SIGNKICK_LEVEL)
&& !check_access(requester, ci, CA_SIGNKICK)))
- anope_SendKick(ci->bi->nick, av[0], av[1], "%s (%s)", av[2],
+ ircdproto->SendKick(ci->bi->nick, av[0], av[1], "%s (%s)", av[2],
requester->nick);
else
- anope_SendKick(ci->bi->nick, av[0], av[1], "%s", av[2]);
+ ircdproto->SendKick(ci->bi->nick, av[0], av[1], "%s", av[2]);
do_kick(ci->bi->nick, 3, av);
send_event(EVENT_BOT_KICK, 3, av[1], av[0], av[2]);
}
diff --git a/src/channels.c b/src/channels.c
index 3fe38c141..5290826f6 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -872,7 +872,7 @@ void do_sjoin(const char *source, int ac, const char **av)
}
if (is_sqlined && !is_oper(user)) {
- anope_SendKick(s_OperServ, av[1], s, "Q-Lined");
+ ircdproto->SendKick(s_OperServ, av[1], s, "Q-Lined");
} else {
if (!check_kick(user, av[1], ts)) {
send_event(EVENT_JOIN_CHANNEL, 3, EVENT_START,
@@ -957,7 +957,7 @@ void do_sjoin(const char *source, int ac, const char **av)
}
if (is_sqlined && !is_oper(user)) {
- anope_SendKick(s_OperServ, av[1], s, "Q-Lined");
+ ircdproto->SendKick(s_OperServ, av[1], s, "Q-Lined");
} else {
if (!check_kick(user, av[1], ts)) {
send_event(EVENT_JOIN_CHANNEL, 3, EVENT_START,
@@ -1032,7 +1032,7 @@ void do_sjoin(const char *source, int ac, const char **av)
}
if (is_sqlined && !is_oper(user)) {
- anope_SendKick(s_OperServ, av[1], s, "Q-Lined");
+ ircdproto->SendKick(s_OperServ, av[1], s, "Q-Lined");
} else {
if (!check_kick(user, av[1], ts)) {
send_event(EVENT_JOIN_CHANNEL, 3, EVENT_START,
@@ -1093,7 +1093,7 @@ void do_sjoin(const char *source, int ac, const char **av)
}
if (is_sqlined && !is_oper(user)) {
- anope_SendKick(s_OperServ, av[1], user->nick, "Q-Lined");
+ ircdproto->SendKick(s_OperServ, av[1], user->nick, "Q-Lined");
} else {
send_event(EVENT_JOIN_CHANNEL, 3, EVENT_START, user->nick,
av[1]);
diff --git a/src/chanserv.c b/src/chanserv.c
index 1231378e0..9df64be41 100644
--- a/src/chanserv.c
+++ b/src/chanserv.c
@@ -1381,7 +1381,7 @@ int check_kick(User * user, const char *chan, time_t chants)
}
ircdproto->SendMode(whosends(ci), chan, "+b %s", mask);
- anope_SendKick(whosends(ci), chan, user->nick, "%s", reason);
+ ircdproto->SendKick(whosends(ci), chan, user->nick, "%s", reason);
return 1;
}
diff --git a/src/core/cs_ban.c b/src/core/cs_ban.c
index 92f8b7733..c3ea133e2 100644
--- a/src/core/cs_ban.c
+++ b/src/core/cs_ban.c
@@ -125,10 +125,10 @@ int do_ban(User * u)
if ((ci->flags & CI_SIGNKICK)
|| ((ci->flags & CI_SIGNKICK_LEVEL)
&& !check_access(u, ci, CA_SIGNKICK)))
- anope_SendKick(whosends(ci), ci->name, u->nick,
+ ircdproto->SendKick(whosends(ci), ci->name, u->nick,
"%s (%s)", reason, u->nick);
else
- anope_SendKick(whosends(ci), ci->name, u->nick, "%s",
+ ircdproto->SendKick(whosends(ci), ci->name, u->nick, "%s",
reason);
const char *kav[4];
@@ -185,10 +185,10 @@ int do_ban(User * u)
if ((ci->flags & CI_SIGNKICK)
|| ((ci->flags & CI_SIGNKICK_LEVEL)
&& !check_access(u, ci, CA_SIGNKICK)))
- anope_SendKick(whosends(ci), ci->name, params, "%s (%s)",
+ ircdproto->SendKick(whosends(ci), ci->name, params, "%s (%s)",
reason, u->nick);
else
- anope_SendKick(whosends(ci), ci->name, params, "%s", reason);
+ ircdproto->SendKick(whosends(ci), ci->name, params, "%s", reason);
const char *kav[4];
kav[0] = ci->name;
diff --git a/src/core/cs_clear.c b/src/core/cs_clear.c
index 989c8ffce..a89b091cd 100644
--- a/src/core/cs_clear.c
+++ b/src/core/cs_clear.c
@@ -358,7 +358,7 @@ int do_clear(User * u)
av[0] = sstrdup(chan);
av[1] = sstrdup(cu->user->nick);
av[2] = sstrdup(buf);
- anope_SendKick(whosends(ci), av[0], av[1], av[2]);
+ ircdproto->SendKick(whosends(ci), av[0], av[1], av[2]);
do_kick(s_ChanServ, 3, av);
free((void *)av[2]);
free((void *)av[1]);
diff --git a/src/core/cs_forbid.c b/src/core/cs_forbid.c
index 20209ddce..dc70d939f 100644
--- a/src/core/cs_forbid.c
+++ b/src/core/cs_forbid.c
@@ -6,8 +6,8 @@
* Please read COPYING and README for further details.
*
* Based on the original code of Epona by Lara.
- * Based on the original code of Services by Andy Church.
- *
+ * Based on the original code of Services by Andy Church.
+ *
* $Id$
*
*/
@@ -112,7 +112,7 @@ int do_forbid(User * u)
av[0] = c->name;
av[1] = cu->user->nick;
av[2] = reason ? reason : "CHAN_FORBID_REASON";
- anope_SendKick(s_ChanServ, av[0], av[1], av[2]);
+ ircdproto->SendKick(s_ChanServ, av[0], av[1], av[2]);
do_kick(s_ChanServ, 3, av);
}
}
diff --git a/src/core/cs_kick.c b/src/core/cs_kick.c
index 44e076d58..4cc6681a2 100644
--- a/src/core/cs_kick.c
+++ b/src/core/cs_kick.c
@@ -6,8 +6,8 @@
* Please read COPYING and README for further details.
*
* Based on the original code of Epona by Lara.
- * Based on the original code of Services by Andy Church.
- *
+ * Based on the original code of Services by Andy Church.
+ *
* $Id$
*
*/
@@ -96,10 +96,10 @@ int do_cs_kick(User * u)
if ((ci->flags & CI_SIGNKICK)
|| ((ci->flags & CI_SIGNKICK_LEVEL)
&& !check_access(u, ci, CA_SIGNKICK)))
- anope_SendKick(whosends(ci), ci->name, u->nick,
+ ircdproto->SendKick(whosends(ci), ci->name, u->nick,
"%s (%s)", reason, u->nick);
else
- anope_SendKick(whosends(ci), ci->name, u->nick, "%s",
+ ircdproto->SendKick(whosends(ci), ci->name, u->nick, "%s",
reason);
av[0] = ci->name;
av[1] = u->nick;
@@ -139,10 +139,10 @@ int do_cs_kick(User * u)
if ((ci->flags & CI_SIGNKICK)
|| ((ci->flags & CI_SIGNKICK_LEVEL)
&& !check_access(u, ci, CA_SIGNKICK)))
- anope_SendKick(whosends(ci), ci->name, params, "%s (%s)",
+ ircdproto->SendKick(whosends(ci), ci->name, params, "%s (%s)",
reason, u->nick);
else
- anope_SendKick(whosends(ci), ci->name, params, "%s", reason);
+ ircdproto->SendKick(whosends(ci), ci->name, params, "%s", reason);
av[0] = ci->name;
av[1] = params;
av[2] = reason;
diff --git a/src/core/cs_suspend.c b/src/core/cs_suspend.c
index 855e6b531..f97b5c54a 100644
--- a/src/core/cs_suspend.c
+++ b/src/core/cs_suspend.c
@@ -6,8 +6,8 @@
* Please read COPYING and README for further details.
*
* Based on the original code of Epona by Lara.
- * Based on the original code of Services by Andy Church.
- *
+ * Based on the original code of Services by Andy Church.
+ *
* $Id$
*
*/
@@ -92,7 +92,7 @@ int do_suspend(User * u)
notice_lang(s_ChanServ, u, CHAN_UNSUSPEND_ERROR);
return MOD_CONT;
}
-
+
/* Only SUSPEND existing channels, otherwise use FORBID (bug #54) */
if ((ci = cs_findchan(chan)) == NULL) {
notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan);
@@ -127,7 +127,7 @@ int do_suspend(User * u)
av[0] = c->name;
av[1] = cu->user->nick;
av[2] = reason ? reason : "CHAN_SUSPEND_REASON";
- anope_SendKick(s_ChanServ, av[0], av[1], av[2]);
+ ircdproto->SendKick(s_ChanServ, av[0], av[1], av[2]);
do_kick(s_ChanServ, 3, av);
}
}
@@ -173,7 +173,7 @@ int do_unsuspend(User * u)
notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan);
return MOD_CONT;
}
-
+
if (!(ci->flags & CI_SUSPENDED))
{
notice_lang(s_ChanServ, u, CHAN_UNSUSPEND_FAILED, chan);
diff --git a/src/core/os_kick.c b/src/core/os_kick.c
index ee256a463..af3d58496 100644
--- a/src/core/os_kick.c
+++ b/src/core/os_kick.c
@@ -6,8 +6,8 @@
* Please read COPYING and README for further details.
*
* Based on the original code of Epona by Lara.
- * Based on the original code of Services by Andy Church.
- *
+ * Based on the original code of Services by Andy Church.
+ *
* $Id$
*
*/
@@ -85,7 +85,7 @@ int do_os_kick(User * u)
notice_lang(s_OperServ, u, OPER_BOUNCY_MODES_U_LINE);
return MOD_CONT;
}
- anope_SendKick(s_OperServ, chan, nick, "%s (%s)", u->nick, s);
+ ircdproto->SendKick(s_OperServ, chan, nick, "%s (%s)", u->nick, s);
if (WallOSKick)
anope_SendGlobops(s_OperServ, "%s used KICK on %s/%s", u->nick,
nick, chan);
diff --git a/src/ircd.c b/src/ircd.c
index 30ffcfd3c..f347e0014 100644
--- a/src/ircd.c
+++ b/src/ircd.c
@@ -43,18 +43,6 @@ void anope_ProcessUsermodes(User *user, int ac, const char **av)
ircdproto->ProcessUsermodes(user, ac, av);
}
-void anope_SendKick(const char *source, const char *chan, const char *user, const char *fmt, ...)
-{
- va_list args;
- char buf[BUFSIZE] = "";
- if (fmt) {
- va_start(args, fmt);
- vsnprintf(buf, BUFSIZE - 1, fmt, args);
- va_end(args);
- }
- ircdproto->SendKick(source, chan, user, buf);
-}
-
void anope_SendNoticeChanops(const char *source, const char *dest, const char *fmt, ...)
{
va_list args;
diff --git a/src/modules/cs_enforce.c b/src/modules/cs_enforce.c
index 5151226f8..867823bc8 100644
--- a/src/modules/cs_enforce.c
+++ b/src/modules/cs_enforce.c
@@ -122,7 +122,7 @@ void do_enforce_restricted(Channel * c)
reason = getstring(u->na, CHAN_NOT_ALLOWED_TO_JOIN);
ircdproto->SendMode(whosends(ci), ci->name, "+b %s %lu", mask,
time(NULL));
- anope_SendKick(whosends(ci), ci->name, u->nick, "%s", reason);
+ ircdproto->SendKick(whosends(ci), ci->name, u->nick, "%s", reason);
av[0] = ci->name;
av[1] = u->nick;
av[2] = reason;
@@ -162,7 +162,7 @@ void do_enforce_cmode_R(Channel * c)
|| !(c->mode & cbm->flag))
ircdproto->SendMode(whosends(ci), ci->name, "+b %s %lu", mask,
time(NULL));
- anope_SendKick(whosends(ci), ci->name, u->nick, "%s", reason);
+ ircdproto->SendKick(whosends(ci), ci->name, u->nick, "%s", reason);
av[0] = ci->name;
av[1] = u->nick;
av[2] = reason;
diff --git a/src/protocol/bahamut.c b/src/protocol/bahamut.c
index 8297cb0ed..d269b9cd8 100644
--- a/src/protocol/bahamut.c
+++ b/src/protocol/bahamut.c
@@ -878,7 +878,7 @@ void BahamutIRCdProto::SendNoticeChanops(const char *source, const char *dest, c
send_cmd(NULL, "NOTICE @%s :%s", dest, buf);
}
-void BahamutIRCdProto::SendKick(const char *source, const char *chan, const char *user, const char *buf)
+void BahamutIRCdProto::SendKickInternal(const char *source, const char *chan, const char *user, const char *buf)
{
if (buf) send_cmd(source, "KICK %s %s :%s", chan, user, buf);
else send_cmd(source, "KICK %s %s", chan, user);
diff --git a/src/protocol/bahamut.h b/src/protocol/bahamut.h
index 8cfabeccf..b99122c24 100644
--- a/src/protocol/bahamut.h
+++ b/src/protocol/bahamut.h
@@ -60,7 +60,8 @@
class BahamutIRCdProto : public IRCDProto {
void SendSVSKillInternal(const char *, const char *, const char *);
- void SendMode(const char *, const char *, const char *);
+ void SendModeInternal(const char *, const char *, const char *);
+ void SendKickInternal(const char *, const char *, const char *, const char *);
public:
void SendSVSNOOP(const char *, int);
void SendAkillDel(const char *, const char *);
@@ -69,7 +70,6 @@ class BahamutIRCdProto : public IRCDProto {
void SendSVSMode(User *, int, const char **);
void SendGuestNick(const char *, const char *, const char *, const char *, const char *);
void SendClientIntroduction(const char *, const char *, const char *, const char *, const char *);
- void SendKick(const char *, const char *, const char *, const char *);
void SendNoticeChanops(const char *, const char *, const char *);
void SendBotOp(const char *, const char *);
void SendJoin(const char *, const char *, time_t);
diff --git a/src/protocol/charybdis.c b/src/protocol/charybdis.c
index 5a3f9847c..6f9034bfc 100644
--- a/src/protocol/charybdis.c
+++ b/src/protocol/charybdis.c
@@ -1011,7 +1011,7 @@ void charybdis_cmd_tmode(const char *source, const char *dest, const char *fmt,
send_cmd(NULL, "MODE %s %s", dest, buf);
}
-void CharybdisProto::SendKick(const char *source, const char *chan, const char *user, const char *buf)
+void CharybdisProto::SendKickInternal(const char *source, const char *chan, const char *user, const char *buf)
{
BotInfo *bi = findbot(source);
User *u = finduser(user);
diff --git a/src/protocol/charybdis.h b/src/protocol/charybdis.h
index c59150410..30c7f769d 100644
--- a/src/protocol/charybdis.h
+++ b/src/protocol/charybdis.h
@@ -48,14 +48,14 @@
class CharybdisProto : public IRCDTS6Proto {
void SendSVSKillInternal(const char *, const char *, const char *);
- void SendMode(const char *, const char *, const char *);
+ void SendModeInternal(const char *, const char *, const char *);
+ void SendKickInternal(const char *, const char *, const char *, const char *);
public:
void SendAkillDel(const char *, const char *);
void SendVhostDel(User *);
void SendAkill(const char *, const char *, const char *, time_t, time_t, const char *);
void SendSVSMode(User *, int, const char **);
void SendClientIntroduction(const char *, const char *, const char *, const char *, const char *);
- void SendKick(const char *, const char *, const char *, const char *);
void SendNoticeChanops(const char *, const char *, const char *);
void SendBotOp(const char *, const char *);
void SendQuit(const char *, const char *);
diff --git a/src/protocol/inspircd11.c b/src/protocol/inspircd11.c
index 00615c088..3e7ef8f32 100644
--- a/src/protocol/inspircd11.c
+++ b/src/protocol/inspircd11.c
@@ -733,7 +733,7 @@ void InspIRCdProto::SendClientIntroduction(const char *nick, const char *user, c
send_cmd(nick, "OPERTYPE Service");
}
-void InspIRCdProto::SendKick(const char *source, const char *chan, const char *user, const char *buf)
+void InspIRCdProto::SendKickInternal(const char *source, const char *chan, const char *user, const char *buf)
{
if (buf) send_cmd(source, "KICK %s %s :%s", chan, user, buf);
else send_cmd(source, "KICK %s %s :%s", chan, user, user);
diff --git a/src/protocol/inspircd11.h b/src/protocol/inspircd11.h
index 176a027af..ad3d47fec 100755
--- a/src/protocol/inspircd11.h
+++ b/src/protocol/inspircd11.h
@@ -54,6 +54,7 @@
class InspIRCdProto : public IRCDProto {
void SendSVSKillInternal(const char *, const char *, const char *);
void SendModeInternal(const char *, const char *, const char *);
+ void SendKickInternal(const char *, const char *, const char *, const char *);
public:
void SendAkillDel(const char *, const char *);
void SendTopic(BotInfo *, const char *, const char *, const char *, time_t);
@@ -62,7 +63,6 @@ class InspIRCdProto : public IRCDProto {
void SendSVSMode(User *, int, const char **);
void SendGuestNick(const char *, const char *, const char *, const char *, const char *);
void SendClientIntroduction(const char *, const char *, const char *, const char *, const char *);
- void SendKick(const char *, const char *, const char *, const char *);
void SendNoticeChanops(const char *, const char *, const char *);
void SendBotOp(const char *, const char *);
void SendJoin(const char *, const char *, time_t);
diff --git a/src/protocol/ratbox.c b/src/protocol/ratbox.c
index 3ddadc07d..c669e366f 100644
--- a/src/protocol/ratbox.c
+++ b/src/protocol/ratbox.c
@@ -941,7 +941,7 @@ void ratbox_cmd_tmode(const char *source, const char *dest, const char *fmt, ...
send_cmd(NULL, "MODE %s %s", dest, buf);
}
-void RatboxProto::SendKick(const char *source, const char *chan, const char *user, const char *buf)
+void RatboxProto::SendKickInternal(const char *source, const char *chan, const char *user, const char *buf)
{
Uid *ud = find_uid(source);
User *u = finduser(user);
diff --git a/src/protocol/ratbox.h b/src/protocol/ratbox.h
index 7481eb120..cb4384fd2 100644
--- a/src/protocol/ratbox.h
+++ b/src/protocol/ratbox.h
@@ -48,12 +48,12 @@
class RatboxProto : public IRCDTS6Proto {
void SendSVSKillInternal(const char *, const char *, const char *);
void SendModeInternal(const char *, const char *, const char *);
+ void SendKickInternal(const char *, const char *, const char *, const char *);
public:
void SendAkillDel(const char *, const char *);
void SendAkill(const char *, const char *, const char *, time_t, time_t, const char *);
void SendSVSMode(User *, int, const char **);
void SendClientIntroduction(const char *, const char *, const char *, const char *, const char *);
- void SendKick(const char *, const char *, const char *, const char *);
void SendNoticeChanops(const char *, const char *, const char *);
void SendBotOp(const char *, const char *);
void SendQuit(const char *, const char *);
diff --git a/src/protocol/unreal32.c b/src/protocol/unreal32.c
index abe62c665..960dcf8db 100644
--- a/src/protocol/unreal32.c
+++ b/src/protocol/unreal32.c
@@ -556,7 +556,7 @@ void UnrealIRCdProto::SendClientIntroduction(const char *nick, const char *user,
SendSQLine(nick, "Reserved for services");
}
-void UnrealIRCdProto::SendKick(const char *source, const char *chan, const char *user, const char *buf)
+void UnrealIRCdProto::SendKickInternal(const char *source, const char *chan, const char *user, const char *buf)
{
if (buf) send_cmd(source, "%s %s %s :%s", send_token("KICK", "H"), chan, user, buf);
else send_cmd(source, "%s %s %s", send_token("KICK", "H"), chan, user);
diff --git a/src/protocol/unreal32.h b/src/protocol/unreal32.h
index 14bd65931..137c1cdd1 100644
--- a/src/protocol/unreal32.h
+++ b/src/protocol/unreal32.h
@@ -83,6 +83,7 @@
class UnrealIRCdProto : public IRCDProto {
void SendSVSKillInternal(const char *, const char *, const char *);
void SendModeInternal(const char *, const char *, const char *);
+ void SendKickInternal(const char *, const char *, const char *, const char *);
public:
void SendSVSNOOP(const char *, int);
void SendAkillDel(const char *, const char *);
@@ -92,7 +93,6 @@ class UnrealIRCdProto : public IRCDProto {
void SendSVSMode(User *, int, const char **);
void SendGuestNick(const char *, const char *, const char *, const char *, const char *);
void SendClientIntroduction(const char *, const char *, const char *, const char *, const char *);
- void SendKick(const char *, const char *, const char *, const char *);
void SendNoticeChanops(const char *, const char *, const char *);
void SendBotOp(const char *, const char *);
void SendJoin(const char *, const char *, time_t);