]>
jfr.im git - irc/quakenet/newserv.git/blob - fishjoin/fishjoin.c
6 #include "../core/hooks.h"
7 #include "../irc/irc.h"
8 #include "../localuser/localuser.h"
9 #include "../localuser/localuserchannel.h"
10 #include "../nick/nick.h"
12 nick
*fishbot_nickname
, *spamscan_nickname
, *fishjoin_nickname
;
14 void fishjoin_handlemessages(nick
*target
, int messagetype
, void **args
)
16 switch ( messagetype
)
19 fishjoin_nickname
= NULL
;
25 int fishjoin_isreportable(channel
*nc
)
27 unsigned long *userhand
;
29 if ( !nc
|| !spamscan_nickname
)
32 userhand
= getnumerichandlefromchanhash(nc
->users
, spamscan_nickname
->numeric
);
34 if ( userhand
== NULL
)
40 void fishjoin_handlejoin(int hooknum
, void* arg
)
42 void** args
= (void**)arg
;
45 if ( fishjoin_nickname
&& fishbot_nickname
&& spamscan_nickname
&& fishbot_nickname
== (nick
*)args
[1] && fishjoin_isreportable((channel
*)args
[0]) )
47 spamchannel
= findchannel("#qnet.fishbot");
50 sendmessagetochannel(fishjoin_nickname
, spamchannel
, "fishbot joined %s", ((channel
*)args
[0])->index
->name
->content
);
54 void fishjoin_handlekick(int hooknum
, void* arg
)
56 void** args
= (void**)arg
;
59 if ( fishjoin_nickname
&& fishbot_nickname
&& spamscan_nickname
&& fishbot_nickname
== (nick
*)args
[1] && fishjoin_isreportable((channel
*)args
[0]) )
61 spamchannel
= findchannel("#qnet.fishbot");
64 sendmessagetochannel(fishjoin_nickname
, spamchannel
, "fishbot kicked from %s by %s, Reason: %s", ((channel
*)args
[0])->index
->name
->content
, args
[2] ? ((nick
*)args
[2])->nick
: "???", args
[3] ? (char *)args
[3] : "???");
68 void fishjoin_handlenewnick(int hooknum
, void* arg
)
72 if ( !fishbot_nickname
&& !strcasecmp(((nick
*)arg
)->nick
, "fishbot") )
74 if ( fishjoin_nickname
)
76 spamchannel
= findchannel("#qnet.fishbot");
79 sendmessagetochannel(fishjoin_nickname
, spamchannel
, "fishbot has returned");
82 fishbot_nickname
= (nick
*)arg
;
85 if ( !spamscan_nickname
&& !strcasecmp(((nick
*)arg
)->nick
, "S") )
87 if ( fishjoin_nickname
)
89 spamchannel
= findchannel("#qnet.fishbot");
92 sendmessagetochannel(fishjoin_nickname
, spamchannel
, "S has returned");
95 spamscan_nickname
= (nick
*)arg
;
99 void fishjoin_handlelostnick(int hooknum
, void* arg
)
101 channel
*spamchannel
;
103 if ( fishbot_nickname
&& fishbot_nickname
== (nick
*)arg
)
105 if ( fishjoin_nickname
)
107 spamchannel
= findchannel("#qnet.fishbot");
110 sendmessagetochannel(fishjoin_nickname
, spamchannel
, "fishbot has quit");
113 fishbot_nickname
= NULL
;
116 if ( spamscan_nickname
&& spamscan_nickname
== (nick
*)arg
)
118 if ( fishjoin_nickname
)
120 spamchannel
= findchannel("#qnet.fishbot");
123 sendmessagetochannel(fishjoin_nickname
, spamchannel
, "S has quit");
126 spamscan_nickname
= NULL
;
132 fishjoin_nickname
= registerlocaluser("F", "TheFBot","fishbotsfriend.quakenet.org", "fishbot's friend", NULL
, UMODE_SERVICE
, &fishjoin_handlemessages
);
133 registerhook(HOOK_CHANNEL_JOIN
, &fishjoin_handlejoin
);
134 registerhook(HOOK_CHANNEL_KICK
, &fishjoin_handlekick
);
135 registerhook(HOOK_NICK_NEWNICK
, &fishjoin_handlenewnick
);
136 registerhook(HOOK_NICK_LOSTNICK
, &fishjoin_handlelostnick
);
137 fishbot_nickname
= getnickbynick("fishbot");
138 spamscan_nickname
= getnickbynick("S");
143 if ( fishjoin_nickname
)
145 deregisterlocaluser(fishjoin_nickname
, NULL
);
146 fishjoin_nickname
= NULL
;
149 deregisterhook(HOOK_CHANNEL_JOIN
, &fishjoin_handlejoin
);
150 deregisterhook(HOOK_CHANNEL_KICK
, &fishjoin_handlekick
);
151 deregisterhook(HOOK_NICK_NEWNICK
, &fishjoin_handlenewnick
);
152 deregisterhook(HOOK_NICK_LOSTNICK
, &fishjoin_handlelostnick
);