Better dynamic creation of event numbers

This commit is contained in:
deathbybandaid 2019-05-14 12:57:31 -04:00
parent 6fafa9714b
commit 74bf4d763a
2 changed files with 14 additions and 12 deletions

View File

@ -6,7 +6,7 @@ from __future__ import unicode_literals, absolute_import, print_function, divisi
import sopel.module
from sopel.config.types import StaticSection, ValidatedAttribute, ListAttribute
from sopel_modules.SpiceBot_Events.System import bot_events_startup_register, bot_events_recieved, bot_events_trigger, botevents, assign_event_number
from sopel_modules.SpiceBot_Events.System import bot_events_startup_register, bot_events_recieved, bot_events_trigger, botevents
from sopel_modules.SpiceBot_SBTools import (
join_all_channels, chanadmin_all_channels, channel_list_current,
@ -35,7 +35,6 @@ def configure(config):
def setup(bot):
bot_logging(bot, 'SpiceBot_Channels', "Starting setup procedure")
assign_event_number(bot, "BOT_CHANNELS")
bot_events_startup_register(bot, [botevents.BOT_CHANNELS])
bot.config.define_section("SpiceBot_Channels", SpiceBot_Channels_MainSection, validate=False)

View File

@ -40,8 +40,7 @@ def bot_events_trigger(bot, number, message):
def bot_events_setup_check(bot):
if "SpiceBot_Events" not in bot.memory:
bot.memory["SpiceBot_Events"] = {"triggers": {}, "startup": [], "loaded": [], "queue": [],
"usednumbers": [botevents.BOT_WELCOME, botevents.BOT_READY, botevents.BOT_CONNECTED, botevents.BOT_LOADED]}
bot.memory["SpiceBot_Events"] = {"triggers": {}, "startup": [], "loaded": [], "queue": []}
def bot_events_check(bot, listreq):
@ -92,14 +91,6 @@ def bot_events_startup_check(bot):
return True
def assign_event_number(bot, eventname):
eventnumber = 0
while not eventnumber and eventnumber not in bot.memory["SpiceBot_Events"]["usednumbers"]:
eventnumber = randint(2000, 9999)
exec("botevents." + str(eventname).upper() + " = " + str(eventnumber))
return eventnumber
class botevents(object):
"""An dynamic listing of all the notable Bot numeric events.
@ -112,7 +103,19 @@ class botevents(object):
rather than ``@module.event('1001')``
"""
usednumbers = []
BOT_WELCOME = '1001'
BOT_READY = '1002'
BOT_CONNECTED = '1003'
BOT_LOADED = '1004'
def __getattr__(self, name):
if hasattr(self, name):
return self.__getattribute__(name)
else:
eventnumber = 0
while not eventnumber and eventnumber not in self.usednumbers:
eventnumber = randint(2000, 9999)
exec("self." + str(name).upper() + " = " + str(eventnumber))
return eventnumber