From 2269fcdbf8db0783c2c7e978ed187102774ba18a Mon Sep 17 00:00:00 2001 From: dnns01 <git@dnns01.de> Date: Tue, 20 Dec 2022 14:46:12 +0100 Subject: [PATCH] Fix permissions for /schedule commands and let loop wait for the next full hour --- extensions/schedule.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/extensions/schedule.py b/extensions/schedule.py index d02487f..1e9859d 100644 --- a/extensions/schedule.py +++ b/extensions/schedule.py @@ -1,3 +1,4 @@ +import asyncio import base64 import json import os @@ -38,7 +39,8 @@ def remove_cancelled_streams(user, segments): @app_commands.guild_only -@app_commands.default_permissions(manage_server=True) +@app_commands.default_permissions(manage_guild=True) +@app_commands.checks.has_permissions(manage_guild=True) class TwitchSchedule(commands.GroupCog, name="schedule"): def __init__(self, bot): self.bot = bot @@ -50,6 +52,8 @@ class TwitchSchedule(commands.GroupCog, name="schedule"): @app_commands.describe(twitch_channel="Twitch channel to add", emoji="Emoji to be used for this channels entries in schedule", update_schedule="Define whether schedule should be updated or not.") + @app_commands.default_permissions(manage_guild=True) + @app_commands.checks.has_permissions(manage_guild=True) async def cmd_add(self, interaction: Interaction, twitch_channel: str, emoji: str, update_schedule: bool = False): await interaction.response.defer(ephemeral=True) user = await self.twitch_client.fetch_users(names=[twitch_channel]) @@ -72,6 +76,8 @@ class TwitchSchedule(commands.GroupCog, name="schedule"): @app_commands.command(name="remove", description="Remove Twitch Channel from Schedule") @app_commands.describe(twitch_channel="Twitch Channel to remove", update_schedule="Define whether Schedule should be updated or not.") + @app_commands.default_permissions(manage_guild=True) + @app_commands.checks.has_permissions(manage_guild=True) async def cmd_remove(self, interaction: Interaction, twitch_channel: str, update_schedule: bool = False): await interaction.response.defer(ephemeral=True) user = await self.twitch_client.fetch_users(names=[twitch_channel]) @@ -92,6 +98,8 @@ class TwitchSchedule(commands.GroupCog, name="schedule"): content=f"Twitch Kanal ist kein Teil des Kalenders.") @app_commands.command(name="update", description="Force to update the schedule") + @app_commands.default_permissions(manage_guild=True) + @app_commands.checks.has_permissions(manage_guild=True) async def cmd_update(self, interaction: Interaction): await interaction.response.defer(ephemeral=True) await self.update_schedule() @@ -101,6 +109,13 @@ class TwitchSchedule(commands.GroupCog, name="schedule"): async def update_task(self): await self.update_schedule() + @update_task.before_loop + async def before_update_task(self): + await self.bot.wait_until_ready() + now = datetime.now() + diff = (datetime(year=now.year, month=now.month, day=now.day, hour=now.hour) + timedelta(hours=1)) - now + await asyncio.sleep(diff.seconds) + async def update_schedule(self): await self.update_database() calendar_week, start_day = get_calendar_week() -- GitLab