Wie macht man zwei Commands (Python, Discord)?
Hallo!
Ich verstehe in Python folgendes nicht:
Ich habe einen kleinen Bot für Discord geschrieben
import discord
client = discord.Client()
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('$hello'):
await message.channel.send('Hello!')
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('$hi'):
await message.channel.send('Hi!')
client.run("meintoken.txt")
und dieser läuft auch soweit. Das einzige Problem: Ich kann keine zwei Befehle ausführen. Wenn ich nach dem Code in DC $hi schreibe, gibt der Bot mir eine Antwort. Wenn ich aber $hello schreibe, passiert gar nichts. Warum? Und wie kriege ich beide unabhängig voneinander zum Laufen? Liegt es an den "await" Befehlen?
Danke für hilfreiche Antworten :D
3 Antworten
Du definierst zweimal die Funktion on_message das heisst, beim zweiten mal überschreibst du die erste.
Um beide Befehle zum funktionieren zu bringen, musst du folgendes machen:
import discord
client = discord.Client()
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('$hello'):
await message.channel.send('Hello!')
if message.content.startswith('$hi'):
await message.channel.send('Hi!')
client.run("meintoken.txt")
Dankeschön! Das hatte ich übersehen. Danke für den Vorschlag, werde ich so übernehmen! ^^
- du solltest keine zwei Funktionen mit dem gleichen Namen definieren
- du kannst in die erste Funktion die Abfrage mit startwith hi machen
- du kannst direkt eine Funktion mit dem Befehl deklarieren, siehe Commands https://discordpy.readthedocs.io/en/latest/ext/commands/commands.html
Warum definierst (bzw. überschreibst) du on_message() doppelt? Das ergibt keinen Sinn.