Warum synchronisiert Discord die Befehle meines Bots nicht?
Hallow!
Ich bin gerade dabei einen Discord Geburtstagsbot zu schreiben.
Der Code funktioniert super, jedoch habe ich seit gestern (06.07) das Problem, dass meine Befehle, die ich hinzufüge oder aktualisiere, nicht in Discord geändert werden.
Ich habe zuerst versucht, direkt am Start eine Sync zu starten:
await bot.tree.sync()
print("Slash Commands synchronisiert.")
Als ich dann aber gelesen habe, dass es dabei ein Limit gäbe, habe ich die Autosync rausgenommen und einen eigenen Befehl erstellt (Was ziemlich blöd war von mir, was bringt der mir, wenn ich den Bot ja nicht syncen kann?)
@bot.event async def on_ready(): logging.info(f'{bot.user} hat sich erfolgreich angemeldet und ist bereit!')
print("-" * 30)
print("Versuche Slash Commands zu synchronisieren...")
try: synced = await bot.tree.sync()
# Versucht globale Synchronisierung
logging.info(f"Erfolgreich {len(synced)} Slash Commands synchronisiert.")
for command in synced:
print(f"Synchronisierter Befehl: /{command.name}") print("-" *30) except Exception as e: logging.error(f"Fehler bei der Synchronisierung der Slash Commands: {e}", exc_info=True) print("-" * 30)
(Gutefrage hat den Code in ein komisches Format gebracht und bin zu faul, den wieder richtig zu ordnen lol)
Da das Sync Limit angeblich nur pro Tag gilt, sollte es heute eigentlich wieder gehen, tut es aber nicht.
Ich habe auch schon einen neuen Bot mit einer neuen Application erstellt, in der Hoffnung, dass der Sync dann wieder funktioniert, aber selbst nach einer Stunde wurde kein Befehl für den neuen Bot hinzugefügt. Die Bots selber sind aber online und in der Konsole wird bestätigt, dass der Bot erfolgreich angemeldet wurde.
Ich hab keinen Plan, wie ich den Sync wieder zum Laufen bekomme. Kann mir jemand helfen? Dankeee!
LG, Chris!
Und JA, ich habe meinen Client oft genug neu gestartet
Was war vor dem Problem anders?
Was hast du am Code geändert?
Das Problem ist aufgetreten, seitdem ich einen Befehl erstellt habe, der eine Berechtigungsprüfung darin hatte. Diese hat nicht geklappt
@commands.has_permissions(manage_guild=True)
Hat der bot denn alle Berechtigungen (vorallem diese) zugeteilt bekommen?
Ja, das habe ich mindestens 5 Mal überprüft.
2 Antworten
Guck mal ob alle @bot.tree.command(...) funktionen schon im code definiert sind, bevor on_ready() aufgerufen wird.
Guten Tag,
ich kann dir mal ein Python Beispiel von mir schicken.
import discord
from discord import app_commands
from discord.ext import commands
intents = discord.Intents.default()
bot = commands.Bot(command_prefix="!", intents=intents)
@bot.event
async def on_ready():
print(f"Bot ist eingeloggt als {bot.user} (ID: {bot.user.id})")
try:
await bot.tree.sync()
except Exception as e:
print(f"Fehler beim Synchronisieren: {e}")
@bot.tree.command(name="ping", description="Antwortet mit Pong!")
async def ping(interaction: discord.Interaction):
await interaction.response.send_message("Pong!")
bot.run("DEIN_BOT_TOKEN")
Danke für deine Antwort!
Naja, mein Code zum syncen sollte ja eigentlich passen. Aber es funktioniert ja eben nicht. Deshalb frage ich ja ^^