Warum kann ich mit Python keine personalisierten Commands programmieren?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

https://discordpy.readthedocs.io/en/stable/quickstart.html

Du kannst einfach mit on_message abfragen, ob der Befehl dem entspricht was du brauchst. Die Methode, die du da verwendest ist mir nicht bekannt (Wobei es gut möglich ist, dass sie funktionieren sollte). Ansonsten mach mal print("test command was entered") in deine test funktion rein, um zu schauen ob sie überhaupt getriggert wurde.

Woher ich das weiß:eigene Erfahrung
Hanibal545 
Fragesteller
 04.09.2022, 01:35
Die Methode, die du da verwendest ist mir nicht bekannt (Wobei es gut möglich ist, dass sie funktionieren sollte).

Es ist die Methode und sollte eigentlich klappen (https://discordpy.readthedocs.io/en/stable/ext/commands/commands.html)

Du kannst einfach mit on_message abfragen, ob der Befehl dem entspricht was du brauchst.

Ich kenn zwar den Command und hab ihn auch früher immer verwendet (klappt auch), aber ich finde wenn man viele Commands hat wird es unordentlich

0
iNeedHelp961  04.09.2022, 01:39
@Hanibal545

Warum denn unordentlich? Erstelle dir eine Klasse, in der du alle Funktionen für deine Commands sammelst. Dann machst du elif in on_message, dadurch hast du es immer noch halbwegs ordentlich. Vielleicht kannst du auch mit variablen arbeiten, so das es dann z.B. so aussieht:

if msg == Commands.TEST:
  Commands.testCmd()
elif msg == Commands.HELLO_WORLD:
  Commands.HelloWorld()
else:
  # Wenn der Command nicht existiert

Was deine Methode angeht, hast du geschaut ob sie getriggert wird? Wenn sie getriggert wird, dann hat es was mit dem zurücksenden zu tun. Wenn nicht, hat es was mit dem command weg zu tun.

1
Hanibal545 
Fragesteller
 04.09.2022, 01:39
Ansonsten mach mal print("test command was entered") in deine test funktion rein, um zu schauen ob sie überhaupt getriggert wurde.

Hab ich auch schon probiert aber die Funktion wurde nicht getriggert

0
iNeedHelp961  04.09.2022, 01:42
@Hanibal545

Hast du mal versucht, anstatt nur "bot.command()" mal den namen mit zu geben?z.B.

@bot.command(name='test')
0
You must have access to the message content for the commands extension to function. This must be set both in the developer portal and within your code.
Failure to do this will result in your bot not responding to any of your commands.

Aus der Doku.

intents = discord.Intents.default()

https://discordpy.readthedocs.io/en/stable/api.html#discord.Intents.default

A factory method that creates a Intents with everything enabled except presences, members and message_content
Hanibal545 
Fragesteller
 04.09.2022, 08:26
intents = discord.Intents.default()
bot = commands.Bot(command_prefix='!', intents=intents)
token = ""

Hab ich doch eigentlich

0

Hallo Hanibal545!

Versuch erstmal in @bot.command() den Namen mit reinzunehmen und das ctx als ctx:Context zu schreiben (so funktionierts bei mir)


@bot.command(name="test")
async def test(ctx:Context):
    await ctx.send(ctx.author)
Woher ich das weiß:eigene Erfahrung