示例#1
0
        async def get_task_valid_task():
            s = Scheduler()
            t_id = s.schedule_at(foo, time=datetime(year=2100, month=1, day=1))

            s.cancel(t_id)

            assert len(s._scheduled_tasks) == 0
示例#2
0
    def test_schedule_in_invalid_time_throws_bad_arg(self):
        async def foo():
            pass

        s = Scheduler()
        with pytest.raises(BadArgument):
            s.schedule_in(foo, time=-1)
示例#3
0
        async def get_task_valid_task():
            s = Scheduler()
            t_id = s.schedule_in(foo, time=1)

            s.cancel(t_id)

            assert len(s._scheduled_tasks) == 0
示例#4
0
def main():
    bot_log = logging.getLogger()

    # check if this is a prod or a dev instance
    if bool(os.environ.get('PROD')):
        bot_log.info('Production env var found, loading production environment')
        bot_secrets.secrets.load_production_secrets()
    else:
        try:
            bot_log.info(f'Attempting to load BotSecrets.json from {os.getcwd()}')
            with open("BotSecrets.json") as f:
                bot_secrets.secrets.load_development_secrets(f.read())
        except FileNotFoundError as e:
            bot_log.fatal(f'{e}: The bot could not find your BotSecrets Json File')
            sys.exit(0)
        except KeyError as e:
            bot_log.fatal(f'{e} is not a valid key in BotSecrets')
            sys.exit(0)
        except Exception as e:
            bot_log.fatal(e)
            sys.exit(0)

    # get the default prefix for the bot instance
    prefix = bot_secrets.secrets.bot_prefix

    # Initialize the messenger here and inject it into the base bot class,
    # this is so it can be reused later on
    # if we decide to add something not related to the bot
    # E.G a website frontend
    messenger = Messenger(name='primary_bot_messenger')

    # create the custom prefix handler class
    custom_prefix = CustomPrefix(default=prefix)

    # enable privileged member gateway intents
    intents = discord.Intents.default()
    intents.members = True

    # Create the scheduler for injection into the bot instance
    scheduler = Scheduler()

    # set allowed mentions
    mentions = discord.AllowedMentions(everyone=False, roles=False)

    bot_log.info('Bot Starting Up')
    ClemBot(
        messenger=messenger,
        scheduler=scheduler,
        command_prefix=custom_prefix.get_prefix,  # noqa: E126
        activity=discord.Game(name='https://clembot.io'),
        help_command=None,
        case_insensitive=True,
        max_messages=50000,
        allowed_mentions=mentions,
        intents=intents
    ).run(bot_secrets.secrets.bot_token)
示例#5
0
def main():

    if not os.path.exists('Logs'):
        os.makedirs('Logs')
    #sets up the logging for discord.py
    disc_log = logging.getLogger('discord')
    disc_log.setLevel(logging.DEBUG)
    disc_log_name = Path(
        f'Logs/{datetime.now().strftime("%Y-%m-%d-%H.%M.%S")}_discord.log')
    handler = logging.FileHandler(filename=disc_log_name,
                                  encoding='utf-8',
                                  mode='w')
    handler.setFormatter(
        logging.Formatter('%(asctime)s:%(levelname)s:%(name)s: %(message)s'))
    disc_log.addHandler(handler)

    #creates the logger for the Bot Itself
    setup_logger()
    bot_log = logging.getLogger('bot')
    bot_log_name = Path(
        f'Logs/{datetime.now().strftime("%Y-%m-%d-%H.%M.%S")}_bot.log')
    bot_file_handle = logging.FileHandler(filename=bot_log_name,
                                          encoding='utf-8',
                                          mode='w')
    bot_file_handle.setFormatter(
        logging.Formatter('%(asctime)s %(levelname)s %(message)s'))
    bot_log.addHandler(bot_file_handle)

    #check if this is a prod or a dev instance
    if bool(os.environ.get('PROD')):
        bot_log.info('Production env var found, loading production enviroment')
        BotSecrets.get_instance().load_production_secrets()
    else:
        try:
            bot_log.info(
                f'Attempting to load BotSecrets.json from {os.getcwd()}')
            with open("BotSecrets.json") as f:
                BotSecrets.get_instance().load_development_secrets(f.read())
        except FileNotFoundError as e:
            bot_log.error(
                f'{e}: The bot could not find your BotSecrets Json File')
            sys.exit(0)
        except KeyError as e:
            bot_log.error(f'{e} is not a valid key in BotSecrets')
            sys.exit(0)
        except Exception as e:
            bot_log.error(e)

    #get the default prefix for the bot instance
    prefix = BotSecrets.get_instance().bot_prefix

    #Initialize the messenger here and inject it into the base bot class,
    #this is so it can be reused later on
    #if we decide to add something not related to the bot
    # E.G a website frontend
    messenger = Messenger(name='primary_bot_messenger')

    #create the custom prefix handler class, and register its methods
    #as event callbacks
    custom_prefix = CustomPrefix(default=prefix)
    messenger.subscribe(Events.on_set_custom_prefix, custom_prefix.set_prefix)

    #enable privileged member gateway intents
    intents = discord.Intents.default()
    intents.members = True

    #Create the scheduler for injection into the bot instance
    scheduler = Scheduler()

    #set allowed mentions
    mentions = discord.AllowedMentions(everyone=False, roles=False)

    bot_log.info('Bot Starting Up')
    ClemBot(
        messenger=messenger,
        scheduler=scheduler,
        command_prefix=custom_prefix.get_prefix,  # noqa: E126
        help_command=None,
        case_insensitive=True,
        max_messages=50000,
        allowed_mentions=mentions,
        intents=intents).run(BotSecrets.get_instance().bot_token)
示例#6
0
 def test_schedule_at_invalid_time_throws_bad_arg(self):
     s = Scheduler()
     with pytest.raises(BadArgument):
         s.schedule_at(None, time=datetime(1, 1, 1, 0, 0))
示例#7
0
        async def get_task_valid_task():
            s = Scheduler()
            t_id = s.schedule_at(foo, time=datetime(year=2100, month=1, day=1))

            assert s.get_task(t_id) is not None
示例#8
0
        async def get_task_valid_task():
            s = Scheduler()
            t_id = s.schedule_in(foo, time=1)

            assert s.get_task(t_id) is not None
示例#9
0
 def test_get_task_invalid_task_returns_none(self):
     s = Scheduler()
     assert s.get_task(1) is None
示例#10
0
        async def valid_time_test():
            s = Scheduler()
            s.schedule_in(foo, time=1)

            assert len(s._scheduled_tasks) == 1
示例#11
0
 def test_schedule_in_null_callback_throws_bad_arg(self):
     s = Scheduler()
     with pytest.raises(BadArgument):
         s.schedule_in(None, time=datetime(1, 1, 1, 0, 0))
示例#12
0
        async def valid_time_test():
            s = Scheduler()
            s.schedule_at(foo, time=datetime(year=2100, month=1, day=1))

            assert len(s._scheduled_tasks) == 1
示例#13
0
        async def get_task_valid_task():
            s = Scheduler()
            s.schedule_in(foo, time=1)

            with pytest.raises(KeyError):
                s.cancel(1)
示例#14
0
        async def get_task_valid_task():
            s = Scheduler()
            t_id = s.schedule_at(foo, time=datetime(year=2100, month=1, day=1))

            with pytest.raises(KeyError):
                s.cancel(1)