Python Bot: "Ignoring exception in on_ready", SlashCommand nicht ausführbar / nicht angezeigt

Hey, ich arbeite momentan an einem Discord Bot für FiveM. Bei diesem können Serverowner nachschauen, ob ein User aus ihrer Community auf einem Cheating Server ist & welche Rollen er auf dem Discord hat. Leider wird mein SlashCommand nicht angezeigt & ist nicht ausführbar. Da ich absolut neu mit Python bin wollte ich es mal hier versuchen, ich konnte leider noch nicht den Error Code beheben.
No description
18 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. ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Kyro
KyroOP7mo ago
kommt sofort 🙂 Error Code
[2025-03-28 19:50:41] [ERROR ] discord.client: Ignoring exception in on_ready
Traceback (most recent call last):
File "C:\Users\Leon\Downloads\pulsenet\.venv\Lib\site-packages\discord\client.py", line 481, in _run_event
await coro(*args, **kwargs)
File "C:\Users\Leon\Downloads\pulsenet\bot.py", line 175, in on_ready
await interaction.response.send_message(embed=embed)
^^^^^^^^^^^
NameError: name 'interaction' is not defined
[2025-03-28 20:18:12] [INFO ] discord.gateway: Shard ID None has successfully RESUMED session 57c9c4e5a798caa0a75a39d798097a91.
[2025-03-28 19:50:41] [ERROR ] discord.client: Ignoring exception in on_ready
Traceback (most recent call last):
File "C:\Users\Leon\Downloads\pulsenet\.venv\Lib\site-packages\discord\client.py", line 481, in _run_event
await coro(*args, **kwargs)
File "C:\Users\Leon\Downloads\pulsenet\bot.py", line 175, in on_ready
await interaction.response.send_message(embed=embed)
^^^^^^^^^^^
NameError: name 'interaction' is not defined
[2025-03-28 20:18:12] [INFO ] discord.gateway: Shard ID None has successfully RESUMED session 57c9c4e5a798caa0a75a39d798097a91.
Line 481 (Error Code)
await coro(*args, **kwargs)
await coro(*args, **kwargs)
Alles um Line 175
if not found_any:
embed.description = ":x: Der Benutzer ist auf keinem der angegebenen Server."

# Interaktionsantwort senden
await interaction.response.send_message(embed=embed)
if not found_any:
embed.description = ":x: Der Benutzer ist auf keinem der angegebenen Server."

# Interaktionsantwort senden
await interaction.response.send_message(embed=embed)
Martin B. ツ
Martin B. ツ7mo ago
Bitte mal vernüftig den ganzen Code der Funktion in einem Codeblock senden sodass man mehr Infos über den context hat.
Kyro
KyroOP7mo ago
Code
import discord
from discord import app_commands
from discord.ext import commands

# Konfiguration: Bot mit Slash-Command-Optionen
intents = discord.Intents.default()
intents.guilds = True
intents.members = True
intents.message_content = True # Für den Zugriff auf Nachrichteninhalte

# Erstelle den Bot mit Slash-Commands
bot = commands.Bot(command_prefix="!", intents=intents)

@bot.event
async def on_ready():
print(f"✅ Bot ist eingeloggt als {bot.user}")
try:
# Synchronisierung der Slash-Commands
synced = await bot.tree.sync()
print(f"🔄 {len(synced)} Slash-Befehle global synchronisiert!")
except Exception as e:
print(f"❌ Fehler beim Synchronisieren der Slash-Befehle: {e}")

# Slash-Command Registrierung
@bot.tree.command(name="checkdata", description="Überprüft, ob ein Benutzer auf bestimmten Servern ist.")
@app_commands.describe(user_id="Die User-ID des zu überprüfenden Benutzers")
async def checkdata(interaction: discord.Interaction, user_id: str):
try:
user_id = int(user_id) # Umwandlung der User-ID in einen Integer
except ValueError:
# Fehlerbehandlung, falls eine ungültige User-ID eingegeben wird
await interaction.response.send_message("❌ Ungültige User-ID. Bitte gib eine gültige Zahl ein.", ephemeral=True)
return

found_any = False
embed = discord.Embed(title="🔍 Benutzerprüfung", color=discord.Color.blue())


@bot.event
async def on_ready():
print(f"✅ Bot ist eingeloggt als {bot.user}")
try:
# Synchronisierung der Slash-Commands
synced = await bot.tree.sync()
print(f"🔄 {len(synced)} Slash-Befehle global synchronisiert!")
except Exception as e:
print(f"❌ Fehler beim Synchronisieren der Slash-Befehle: {e}")
import discord
from discord import app_commands
from discord.ext import commands

# Konfiguration: Bot mit Slash-Command-Optionen
intents = discord.Intents.default()
intents.guilds = True
intents.members = True
intents.message_content = True # Für den Zugriff auf Nachrichteninhalte

# Erstelle den Bot mit Slash-Commands
bot = commands.Bot(command_prefix="!", intents=intents)

@bot.event
async def on_ready():
print(f"✅ Bot ist eingeloggt als {bot.user}")
try:
# Synchronisierung der Slash-Commands
synced = await bot.tree.sync()
print(f"🔄 {len(synced)} Slash-Befehle global synchronisiert!")
except Exception as e:
print(f"❌ Fehler beim Synchronisieren der Slash-Befehle: {e}")

# Slash-Command Registrierung
@bot.tree.command(name="checkdata", description="Überprüft, ob ein Benutzer auf bestimmten Servern ist.")
@app_commands.describe(user_id="Die User-ID des zu überprüfenden Benutzers")
async def checkdata(interaction: discord.Interaction, user_id: str):
try:
user_id = int(user_id) # Umwandlung der User-ID in einen Integer
except ValueError:
# Fehlerbehandlung, falls eine ungültige User-ID eingegeben wird
await interaction.response.send_message("❌ Ungültige User-ID. Bitte gib eine gültige Zahl ein.", ephemeral=True)
return

found_any = False
embed = discord.Embed(title="🔍 Benutzerprüfung", color=discord.Color.blue())


@bot.event
async def on_ready():
print(f"✅ Bot ist eingeloggt als {bot.user}")
try:
# Synchronisierung der Slash-Commands
synced = await bot.tree.sync()
print(f"🔄 {len(synced)} Slash-Befehle global synchronisiert!")
except Exception as e:
print(f"❌ Fehler beim Synchronisieren der Slash-Befehle: {e}")
Server Listung
SERVER_LIST = [
{"id": 980707354649698335, "name": "R&R"},
{"id": 1191799136761168055, "name": "𝗿𝘂𝗶𝘇𝘇 𝘀𝗵𝗼𝗽 𝟬,𝟲#?"},
{"id": 878910940937089055, "name": "ezMod"},
SERVER_LIST = [
{"id": 980707354649698335, "name": "R&R"},
{"id": 1191799136761168055, "name": "𝗿𝘂𝗶𝘇𝘇 𝘀𝗵𝗼𝗽 𝟬,𝟲#?"},
{"id": 878910940937089055, "name": "ezMod"},
... Danach
found_any = False # Stelle sicher, dass dies innerhalb der Funktion eingerückt ist
embed = discord.Embed(title=":mag: Benutzerprüfung", color=discord.Color.blue())

for server in SERVER_LIST:
guild = bot.get_guild(server["id"])
if guild:
member = guild.get_member(user_id)
if member:
found_any = True
roles = ", ".join([role.name for role in member.roles if role.name != "@everyone"]) or "Keine Rollen"
join_date = member.joined_at.strftime("%d.%m.%Y %H:%M:%S") if member.joined_at else "Unbekannt"

embed.add_field(
name=f":shield: {server['name']}",
value=f"**Rollen:** {roles}\n**Beigetreten am:** {join_date}",
inline=False
)

if not found_any:
embed.description = ":x: Der Benutzer ist auf keinem der angegebenen Server."

# Interaktionsantwort senden
await interaction.response.send_message(embed=embed)

# Starte den Bot
bot.run("TOKEN")
found_any = False # Stelle sicher, dass dies innerhalb der Funktion eingerückt ist
embed = discord.Embed(title=":mag: Benutzerprüfung", color=discord.Color.blue())

for server in SERVER_LIST:
guild = bot.get_guild(server["id"])
if guild:
member = guild.get_member(user_id)
if member:
found_any = True
roles = ", ".join([role.name for role in member.roles if role.name != "@everyone"]) or "Keine Rollen"
join_date = member.joined_at.strftime("%d.%m.%Y %H:%M:%S") if member.joined_at else "Unbekannt"

embed.add_field(
name=f":shield: {server['name']}",
value=f"**Rollen:** {roles}\n**Beigetreten am:** {join_date}",
inline=False
)

if not found_any:
embed.description = ":x: Der Benutzer ist auf keinem der angegebenen Server."

# Interaktionsantwort senden
await interaction.response.send_message(embed=embed)

# Starte den Bot
bot.run("TOKEN")
Alles ist einer bot.py Ich nutze die neuste discord.py Version Alles hintereinander weg, konnte nur nicht alle Server mit IDs auflisten wegen Name Limit
Martin B. ツ
Martin B. ツ7mo ago
Ist alles innerhalb des on_ready?
Kyro
KyroOP7mo ago
ja.
No description
Kyro
KyroOP7mo ago
"on ready" und "run event"
Martin B. ツ
Martin B. ツ7mo ago
Im on_ready Event hast du keinen Zugriff auf eine Interaction, da ja kein User auf mit einem Slash command, button oder anderen Components eine Interaktion an den bot auslöst. Es ist legendlich ein Event was ausgelöst wird wenn dein bot fertig mit Discord verbunden wurde und sich initialisiert hat (Cache etc) Du müsstest deinen Kanal erst abfragen in den das gesendet werden soll z.B. per bot.get_channel() (Anhand der Channel ID).
Kyro
KyroOP7mo ago
bot.get_channel() (ID)
bot.get_channel() (ID)
wo genau muss das hin? oder ist das egal ob anfang oder ende
Kyro
KyroOP7mo ago
No description
Martin B. ツ
Martin B. ツ7mo ago
channel = bot.get_channel(deine ID)
await channel.send(...)
channel = bot.get_channel(deine ID)
await channel.send(...)
Die Reihenfolge ist nicht egal du musst erst den channel abfragen und ihn in einer variable speichern, dann kannst du den Channel nutzen um Nachrichten rein zu senden.
Kyro
KyroOP7mo ago
bei "await channel.send(...)", muss da was in die klammern?
Martin B. ツ
Martin B. ツ7mo ago
Sofern das discord.py ist dann lese das in den Docs nach. https://discordpy.readthedocs.io/en/stable/api.html?highlight=discord%20textchann#discord.TextChannel.send Eben deine Nachricht als String oder alles mögliche wie embeds, views für components etc.
Kyro
KyroOP7mo ago
Ich habe oben im Channel ein Embed festgelegt Wie kann ich das an "await channel.send(...)" binden, sodass das Embed gesendet wird?
Martin B. ツ
Martin B. ツ7mo ago
Sowie du das bei iteraction.response.send_message gemacht hast. Also embed=embed. Die Syntax ist indem Fall gleich um es konsistent zu halten.
Kyro
KyroOP7mo ago
ah okey danke dir 🙂
Martin B. ツ
Martin B. ツ7mo ago
@KyroWäre cool wenn du die entsprechende Nachricht https://discord.com/channels/616655040614236160/1355267140436885714/1355269503436587068 als Antwort akzeptierst mit dem :accept:.
Bl4cklist🔥System
- Problem selbst gelöst: Der Ersteller dieser Frage hat das Problem selbst gelöst.

Did you find this page helpful?