return ban;
}
+struct BanNode* getMatchingChannelBan(struct ChanNode *chan, char *mask) {
+ struct BanNode *cban;
+ for(cban = chan->bans; cban; cban = cban->next) {
+ if(!match(cban->mask, mask)) {
+ return cban;
+ }
+ }
+ return NULL;
+}
+
void removeChannelBanMask(struct ChanNode *chan, char *mask) {
struct BanNode *cban, *last = NULL;
for(cban = chan->bans; cban; cban = cban->next) {
};
struct BanNode* addChannelBan(struct ChanNode *chan, char *mask);
+struct BanNode* getMatchingChannelBan(struct ChanNode *chan, char *mask);
void removeChannelBanMask(struct ChanNode *chan, char *mask);
void removeChannelBan(struct BanNode *ban);
void removeChannelBans(struct ChanNode *chan);
struct ChanUser *chanuser = addChanUser(chan, user); //it must be a bot
get_userlist(chan, got_channel_userlist, chanuser);
putsock(client, "MODE %s", chan->name);
+ putsock(client, "MODE +b %s", chan->name);
} else if(!isUserOnChan(user, chan) && (chan->flags & CHANFLAG_RECEIVED_USERLIST)) {
struct ChanUser *chanuser = addChanUser(chan, user);
event_join(chanuser);
return 1;
}
+static IRC_CMD(raw_367) {
+ //Watchcat #pktest pk911!*@* TestBot!~bot@pktest.user.WebGamesNet 1315863279
+ struct ChanNode *chan = getChanByName(argv[1]);
+ if(!chan) return 0;
+ struct BanNode *ban;
+ while((ban = getMatchingChannelBan(chan, argv[2]))) {
+ removeChannelBan(ban);
+ }
+ addChannelBan(chan, argv[2]);
+}
+
void init_parser() {
//all the raws we receive...
register_irc_function("001", raw_001);
register_irc_function("324", raw_324);
+ register_irc_function("367", raw_367);
register_irc_function("INVITE", raw_invite);
register_irc_function("NOTICE", raw_notice);
register_irc_function("TOPIC", raw_topic);