summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/protocol/inspircd12.cpp9
-rw-r--r--modules/pseudoclients/botserv.cpp2
-rw-r--r--src/bots.cpp2
-rw-r--r--src/modes.cpp3
4 files changed, 13 insertions, 3 deletions
diff --git a/modules/protocol/inspircd12.cpp b/modules/protocol/inspircd12.cpp
index d00284640..55ab40cd8 100644
--- a/modules/protocol/inspircd12.cpp
+++ b/modules/protocol/inspircd12.cpp
@@ -235,8 +235,15 @@ class InspIRCd12Proto : public IRCDProto
BotInfo *setter = BotInfo::Find(user->nick);
for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i)
- if (cs.modes.count(ModeManager::ChannelModes[i]->name))
+ {
+ ChannelMode *cm = ModeManager::ChannelModes[i];
+
+ if (cs.modes.count(cm->name) || cs.modes.count(cm->mchar))
+ {
c->SetMode(setter, ModeManager::ChannelModes[i], user->GetUID(), false);
+ cs.modes.insert(cm->name);
+ }
+ }
}
}
diff --git a/modules/pseudoclients/botserv.cpp b/modules/pseudoclients/botserv.cpp
index fd7f0380e..2c506876a 100644
--- a/modules/pseudoclients/botserv.cpp
+++ b/modules/pseudoclients/botserv.cpp
@@ -159,7 +159,7 @@ class BotServCore : public Module
void OnJoinChannel(User *user, Channel *c) anope_override
{
- if (c->ci && c->ci->bi)
+ if (user->server != Me && c->ci && c->ci->bi)
{
/**
* We let the bot join even if it was an ignored user, as if we don't,
diff --git a/src/bots.cpp b/src/bots.cpp
index a81332ad6..4b47b1cc5 100644
--- a/src/bots.cpp
+++ b/src/bots.cpp
@@ -147,7 +147,7 @@ void BotInfo::Assign(User *u, ChannelInfo *ci)
ci->bi->UnAssign(u, ci);
ci->bi = this;
- if (ci->c && ci->c->users.size() >= Config->BSMinUsers)
+ if (Me->IsSynced() && ci->c && ci->c->users.size() >= Config->BSMinUsers)
this->Join(ci->c, &ModeManager::DefaultBotModes);
}
diff --git a/src/modes.cpp b/src/modes.cpp
index e50d4affb..d8926d7e8 100644
--- a/src/modes.cpp
+++ b/src/modes.cpp
@@ -599,6 +599,9 @@ void ModeManager::UpdateDefaultMLock(ServerConfig *config)
if (cm && cm->type == MODE_STATUS)
DefaultBotModes.modes.insert(cm->name);
+ else
+ /* We don't know the mode yet so just use the mode char */
+ DefaultBotModes.modes.insert(config->BotModes[i]);
}
}