diff options
Diffstat (limited to 'src/bots.cpp')
-rw-r--r-- | src/bots.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/bots.cpp b/src/bots.cpp new file mode 100644 index 000000000..487cc6dc7 --- /dev/null +++ b/src/bots.cpp @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2008 Robin Burchell <w00t@inspircd.org> + * Copyright (C) 2008 Anope Team <info@anope.org> + * + * Please read COPYING and README for further details. + * + * + * $Id$ + * + */ + +#include "services.h" + +BotInfo::BotInfo(const char *nnick) +{ + this->nick = sstrdup(nnick); + this->lastmsg = time(NULL); + insert_bot(this); // XXX, this is ugly, but it needs to stay until hashing of bots is redone in STL. + nbots++; +} + +void BotInfo::ChangeNick(const char *newnick) +{ + if (this->next) + this->next->prev = this->prev; + if (this->prev) + this->prev->next = this->next; + else + botlists[tolower(*this->nick)] = this->next; + + if (this->nick) + free(this->nick); + this->nick = sstrdup(newnick); + + insert_bot(this); +} + +void BotInfo::RejoinAll() +{ + int i; + ChannelInfo *ci; + + for (i = 0; i < 256; i++) + for (ci = chanlists[i]; ci; ci = ci->next) + if (ci->bi == this && ci->c && (ci->c->usercount >= BSMinUsers)) + bot_join(ci); +} |