mirror of
https://github.com/UiO-Gaming/mustafa.git
synced 2026-11-05 13:56:48 +01:00
clean up leftover guild commands in prod and warn about duplicates in dev
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5e6ed4d6cc
commit
e92582a23d
2 files changed
+17
-3
No files matched your search
@@ -14,6 +14,8 @@ Merk at konfigurasjonsfilen har felt for bl.a. databasekobling. Disse er ikke p
|
||||
|
||||
`config_mode` bestemmer hvor slash-kommandoene synkroniseres. Med `dev` synkroniseres de bare til serveren i `dev_guild`, der de dukker opp med en gang. Med `prod` synkroniseres de globalt.
|
||||
|
||||
Bruk en egen botbruker når du utvikler lokalt. Kjører du `dev` med samme token som produksjonsbotten, får serveren i `dev_guild` både de globale kommandoene og kopiene, og alle kommandoer vises to ganger. Botten logger en advarsel når det skjer. I `prod` fjernes kommandoer som er igjen i `dev_guild` fra tidligere `dev`-kjøringer automatisk.
|
||||
|
||||
### Valgfrie funksjoner
|
||||
|
||||
Mangler et felt, skrus funksjonene som trenger det av når botten starter:
|
||||
|
||||
+15
-3
@@ -130,12 +130,24 @@ class Bot(commands.Bot):
|
||||
name = file[:-3]
|
||||
await bot.load_extension(f"cogs.{name}")
|
||||
|
||||
# Sync slash commands
|
||||
# Sync slash commands. A sync only replaces the commands in its own scope, so commands left
|
||||
# in the other scope (global or guild) from running in the other mode show up as duplicates
|
||||
guild = discord.Object(id=self.guild_id)
|
||||
if self.config_mode == "prod":
|
||||
await self.tree.sync(guild=None)
|
||||
try:
|
||||
self.tree.clear_commands(guild=guild)
|
||||
await self.tree.sync(guild=guild)
|
||||
except discord.HTTPException as e:
|
||||
self.logger.warning(f"Could not remove leftover guild commands in {self.guild_id}: {e}")
|
||||
else:
|
||||
self.tree.copy_global_to(guild=discord.Object(id=self.guild_id))
|
||||
await self.tree.sync(guild=discord.Object(id=self.guild_id))
|
||||
self.tree.copy_global_to(guild=guild)
|
||||
await self.tree.sync(guild=guild)
|
||||
if global_commands := await self.tree.fetch_commands():
|
||||
self.logger.warning(
|
||||
f"This bot application also has {len(global_commands)} global slash commands, which show up "
|
||||
+ "twice in the dev guild. Use a separate bot application for development, see the README"
|
||||
)
|
||||
|
||||
async def close(self):
|
||||
"""
|
||||
|
||||
Reference in new issue
Block a user