From f1943d7f45e2f129d2fcea4d3157e9e06f10e54d Mon Sep 17 00:00:00 2001 From: dgw Date: Wed, 1 Dec 2021 11:05:59 -0600 Subject: [PATCH] Backport pull request #2215 coretasks: alert owner if nick in `RPL_WELCOME` does not match config --- sopel/coretasks.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/sopel/coretasks.py b/sopel/coretasks.py index 6efe9b6940..9472b90684 100644 --- a/sopel/coretasks.py +++ b/sopel/coretasks.py @@ -245,6 +245,29 @@ def startup(bot, trigger): if bot.connection_registered: return + # nick shenanigans are serious business, but fortunately RPL_WELCOME + # includes the actual nick used by the server after truncation, removal + # of invalid characters, etc. so we can check for such shenanigans + if trigger.event == events.RPL_WELCOME: + if bot.nick != trigger.args[0]: + # setting modes below is just one of the things that won't work + # as expected if the conditions for running this block are met + privmsg = ( + "Hi, I'm your bot, %s. The IRC server didn't assign me the " + "nick you configured. This can cause problems for me, and " + "make me do weird things. You'll probably want to stop me, " + "figure out why my nick isn't acceptable, and fix that before " + "starting me again." % bot.nick + ) + debug_msg = ( + "RPL_WELCOME indicated the server did not accept the bot's " + "configured nickname. Requested '%s'; got '%s'. This can " + "cause unexpected behavior. Please modify the configuration " + "and restart the bot." % (bot.nick, trigger.args[0]) + ) + LOGGER.critical(debug_msg) + bot.say(privmsg, bot.config.core.owner) + # set flag bot.connection_registered = True