Skip to the content.

Changelog - Version 3.14 (2024-04-16)

Added

async def timed_message_loop():
    bot_logger.info(f"Started timed messages loop")
    while True:
        await asyncio.sleep(150)
        await timed_message()

Changed

scheduled_tasks = asyncio.Queue()
async def timed_message():
    if stream_online:
        cursor.execute('SELECT interval, message FROM timed_messages')
        messages = cursor.fetchall()
        bot_logger.info(f"Timed Messages: {messages}")
        for interval, message in messages:
            if message in scheduled_tasks:
                return
            bot_logger.info(f"Timed Message: {message} has a {interval} minute wait.")
            time_now = datetime.now()
            send_time = time_now + timedelta(minutes=int(interval))
            wait_time = (send_time - time_now).total_seconds()
            bot_logger.info(f"Scheduling message: '{message}' to be sent in {wait_time} seconds")
            task = asyncio.create_task(send_timed_message(message, wait_time))
            scheduled_tasks.append(task)  # Keep track of the task
    else:
        # Cancel all scheduled tasks if the stream goes offline
        for task in scheduled_tasks:
            task.cancel()
        scheduled_tasks.clear()  # Clear the list of tasks
async def send_timed_message(message):
    try:
        if stream_online:
            channel = bot.get_channel(CHANNEL_NAME)
            bot_logger.info(f"Sending Timed Message: {message}")
            await channel.send(message)
        else:
            bot_logger.info("Stream is offline. Message not sent.")
    except asyncio.CancelledError:
        bot_logger.info(f"Task cancelled for {message}")
        pass

Thank you for your feedback and support!

As always, your feedback is appreciated. Please report any issues, bugs, or suggestions in the #ticket-info channel on our Discord server. You can also submit feedback and bug reports directly on our website: https://botofthespecter.com/feedback.php