DMs deaktivieren discord.py

Hallöchen! Ich entwickle derzeit einen Discord-Bot und möchte die DMs für den Bot deaktivieren, da die Befehle ausschließlich in Servern genutzt werden sollen, auf denen der Bot installiert ist. Gibt es eine einfachere Methode, als jeden einzelnen Command anzupassen, damit er die guild.id überprüft und eine Fehlermeldung ausgibt, wenn diese None ist? Danke im Voraus! 😊
8 Replies
Bl4cklist🔥System
:hack: - Danke für deine Frage! › Unsere Community freut sich schon, dir bei deinem Problem weiterzuhelfen! Sei so lieb und unterstütze die Personen welche dir weitergeholfen in dem du die Antwort welche das Problem lösen konnte akzeptierst. - :accept: = Akzeptiert die Antwort und markiert dein Problem als gelöst. Alternativ kannst du auch /solved verwenden, falls du es selbst herausgefunden hast. Pushe deinen Post für mehr Aufmerksamkeit mit /push. ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Kalo
Kalo8mo ago
Das geht mit dem guild_only() decorator. Wenn du mit „cogs“ arbeitest, müsste es @app_commands.guild_only() sein
Zero
ZeroOP8mo ago
Danke, ich probiere es gleich aus
! Yannic
! Yannic8mo ago
^ Das bedeutet aber nicht das die Bot DMs deaktiviert sind, er erhält trotzdem alle Events die in den DMs passieren (wie Nachrichten senden, also on_message event, etc.) - aber ja, die Slashbefehle funktionieren dort dann nich
Zero
ZeroOP8mo ago
achso, ich hatte das vorhin so gelöst, das ich in jedem command eine abfrage erstellt hab
if interaction.guild is None:
embed = discord.Embed(
title="⚠️ Command Error",
description="This command can only be used in a **server** and not in **DMs**.",
color=discord.Color.red()
)
embed.set_footer(text="Please use this command in a server where the bot is present.")


await interaction.response.send_message(embed=embed, ephemeral=True)
return
if interaction.guild is None:
embed = discord.Embed(
title="⚠️ Command Error",
description="This command can only be used in a **server** and not in **DMs**.",
color=discord.Color.red()
)
embed.set_footer(text="Please use this command in a server where the bot is present.")


await interaction.response.send_message(embed=embed, ephemeral=True)
return
ist aber doof das ganze in jedem command zu haben, da er sonst trotzdem reagiert.
! Yannic
! Yannic8mo ago
Dies ist aber eine sehr schlechte Methode - ich würde dir das empfehlen was Kalo sagte, weil es erstmal sehr kurz ist und auch so funktioniert wie man e sbraucht. Daher rate ich dir das von Kalo zu nutzen - dein Code bedeutet nicht nur extrem viele Code-Wiederholungen, sondern guild kann auch in anderen Kontexten einfach None sein. Zum Beispiel wenn Discord's API wieder rum spinnt.
Zero
ZeroOP8mo ago
macht Sinn 😄
Bl4cklist🔥System
- Antwort akzeptiert: Der Ersteller dieser Frage hat deine Antwort akzeptiert (+25 Karma)

Did you find this page helpful?