diff --git a/sopel_modules/SpiceBot/Database.py b/sopel_modules/SpiceBot/Database.py index 42c2b80..078d3b1 100644 --- a/sopel_modules/SpiceBot/Database.py +++ b/sopel_modules/SpiceBot/Database.py @@ -612,6 +612,9 @@ class BotDatabase(): def alias_nick(self, nick, alias): return self.db.alias_nick(nick, alias) + def unalias_nick(self, alias): + return self.db.unalias_nick(alias) + def check_nick_id(self, nick): try: self.db.get_nick_id(nick, create=False) diff --git a/sopel_modules/SpiceBot/Users.py b/sopel_modules/SpiceBot/Users.py index 560596f..ba393f9 100644 --- a/sopel_modules/SpiceBot/Users.py +++ b/sopel_modules/SpiceBot/Users.py @@ -240,24 +240,27 @@ class BotUsers(): self.mark_user_offline(nick_id) def nick(self, bot, trigger): + oldnick = trigger.nick + old_nick_id = self.whois_ident(oldnick) newnick = Identifier(trigger) - if trigger.nick == bot.nick or newnick == bot.nick: + if oldnick == bot.nick or newnick == bot.nick: return - # alias the nick - if not botdb.check_nick_id(newnick): - botdb.alias_nick(trigger.nick, newnick) - # Identify - nick_id = self.whois_ident(newnick) # Verify nick is in the all list - self.add_to_all(newnick, nick_id) + self.add_to_all(oldnick, old_nick_id) # Verify nick is in the all list - self.add_to_current(newnick, nick_id) + self.add_to_current(oldnick, old_nick_id) # set current nick - self.mark_current_nick(newnick, nick_id) + self.mark_current_nick(newnick, old_nick_id) # add joined channel to nick list - self.add_channel(trigger.sender, nick_id) + self.add_channel(trigger.sender, old_nick_id) # mark user as online - self.mark_user_online(nick_id) + self.mark_user_online(old_nick_id) + # alias the nick + try: + botdb.alias_nick(oldnick, newnick) + except Exception as e: + old_nick_id = e + return def mode(self, bot, trigger): return diff --git a/sopel_modules/SpiceBot_Core_Commands/Users.py b/sopel_modules/SpiceBot_Core_Commands/Users.py new file mode 100644 index 0000000..bb36e6c --- /dev/null +++ b/sopel_modules/SpiceBot_Core_Commands/Users.py @@ -0,0 +1,15 @@ +# coding=utf8 +from __future__ import unicode_literals, absolute_import, division, print_function +""" +This is the SpiceBot Users system. +""" +import sopel + +import sopel_modules.SpiceBot as SpiceBot + + +@SpiceBot.prerun('nickname') +@sopel.module.nickname_commands('users', 'user') +def nickname_comand_users(bot, trigger, botcom): + bot.say("WIP") + return diff --git a/sopel_modules/SpiceBot_Core_Commands/__init__.py b/sopel_modules/SpiceBot_Core_Commands/__init__.py index e4b9d44..468cf8b 100644 --- a/sopel_modules/SpiceBot_Core_Commands/__init__.py +++ b/sopel_modules/SpiceBot_Core_Commands/__init__.py @@ -9,6 +9,7 @@ This module contains references only for other modules to utilize. from .CommandsQuery import * from .Commands import * from .Channels import * +from .Users import * from .Database import * from .Uptime import * from .Logs import * diff --git a/sopel_modules/SpiceBot_Core_Processing/Channels.py b/sopel_modules/SpiceBot_Core_Processing/Channels.py index 92b4a66..09940fd 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Channels.py +++ b/sopel_modules/SpiceBot_Core_Processing/Channels.py @@ -142,7 +142,7 @@ def bot_channelscan(bot, trigger): @sopel.module.event(SpiceBot.events.RPL_NAMREPLY) @sopel.module.rule('(.*)') -def handle_names(bot, trigger): +def handle_names_channels(bot, trigger): SpiceBot.channels.rpl_names(bot, trigger) @@ -150,5 +150,5 @@ def handle_names(bot, trigger): @sopel.module.rule('.*') @sopel.module.priority('high') @sopel.module.unblockable -def recv_who(bot, trigger): +def recv_who_channels(bot, trigger): SpiceBot.channels.rpl_who(bot, trigger) diff --git a/sopel_modules/SpiceBot_Core_Processing/Users.py b/sopel_modules/SpiceBot_Core_Processing/Users.py index d97fa11..07a7009 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Users.py +++ b/sopel_modules/SpiceBot_Core_Processing/Users.py @@ -52,13 +52,13 @@ def bot_channelscan_users(bot, trigger): @sopel.module.rule('.*') -def bot_users_chat(bot, trigger): +def bot_users_chat_users(bot, trigger): SpiceBot.users.chat(bot, trigger) @sopel.module.event(SpiceBot.events.RPL_NAMREPLY) @sopel.module.rule('(.*)') -def handle_names(bot, trigger): +def handle_names_users(bot, trigger): SpiceBot.users.rpl_names(bot, trigger) @@ -66,17 +66,17 @@ def handle_names(bot, trigger): @sopel.module.rule('.*') @sopel.module.priority('high') @sopel.module.unblockable -def recv_who(bot, trigger): +def recv_who_users(bot, trigger): SpiceBot.users.rpl_who(bot, trigger) @sopel.module.event('ACCOUNT') @sopel.module.rule('.*') -def account_notify(bot, trigger): +def account_notify_users(bot, trigger): SpiceBot.users.account(bot, trigger) @sopel.module.event('AWAY') @sopel.module.rule('.*') -def track_notify(bot, trigger): +def track_notify_users(bot, trigger): SpiceBot.users.track_notify(bot, trigger)