Seite 1 von 1
Discord py
Verfasst: Freitag 19. November 2021, 19:13
von Juestan
Hi, ich habe einen Discord Bot der mit einem Befehl eine Nachricht in den Chat sendet indem der Befehl ausgeführt wurde.
Ich habe bereits einen code, der nicht funktioniert:
Code: Alles auswählen
@commands.command()
async def hilfe(ctx):
await ctx.send('hi')
Mein prefix ist "-"
also soll er mit dem command "-hilfe" eine Nachricht senden
Re: Discord py
Verfasst: Samstag 20. November 2021, 13:58
von SeBu
Kann es sein, dass dein Decorator falsch ist? Oder heißt die Instanz deines Bots wirklich commands?
Hier ist ein Beispiel aus dem discord.py Repository
Da siehst du, wie in Zeile 15 der Bot definiert wird, der in den Decorators benutzt wird. (Der übrigens auch richtig eingerückt werden muss.)
Falls ich damit falsch gelegen habe, wäre etwas mehr Code natürlich hilfreich.
Ansonsten findet sich dort auch noch ein anderes Beispiel für einen simpleren Reply-Bot und zwar
hier.
Kleine Anmerkung: Da die Entwicklung von discord.py eingestellt wurde und es wahrscheinlich auch bleiben wird, wäre es, falls du ein größeres Projekt planst, eventuell sinnvoll, eine andere Library (eventuell sogar in einer anderen Sprache) zu nutzen. (Ich habe z.B. wegen dem fehlenden Support für Slash-Commands bereits gewechselt, um nicht später wegen irgendwelchen Breaking Changes wieder von 0 anfangen zu müssen. Für deine geplanten Reply-Commands etc. reicht discord.py aber natürlich (noch) vollkommen aus.)
Re: Discord py
Verfasst: Montag 22. November 2021, 23:40
von Juestan
Die Instanz heißt bei mir in der tat commands.
Hier einmal der ganze code:
Code: Alles auswählen
import discord
from discord.ext import commands
import youtube_dl
class music(commands.Cog):
def __init__(self,client):
self.client = client
@commands.command()
async def join(self,ctx):
if ctx.author.voice is None:
await ctx.send("Du bist nicht in einem Sprachkanal")
voice_channel = ctx.author.voice.channel
if ctx.voice_client is None:
await voice_channel.connect()
await ctx.send('Moin Meistä, was willst du hören?')
else:
await ctx.voice_client.move_to(voice_channel)
@commands.command()
async def leave(self,ctx):
await ctx.voice_client.disconnect()
await ctx.send('Alles klar! Bin weg.')
@commands.command()
async def play(self,ctx,url):
ctx.voice_client.stop()
FFMPEG_OPTIONS = {'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', 'options': '-vn'}
YDL_OPTIONS = {'format':"bestaudio"}
vc = ctx.voice_client
await ctx.send('Alles klar! Wird abgespielt.')
with youtube_dl.YoutubeDL(YDL_OPTIONS) as ydl:
info = ydl.extract_info(url, download=False)
url2 = info['formats'][0]['url']
source = await discord.FFmpegOpusAudio.from_probe(url2,**FFMPEG_OPTIONS)
vc.play(source)
@commands.command()
async def hilfe(self,ctx, *, user_message):
await ctx.send('h')
@commands.command()
async def stop(self,ctx):
await ctx.voice_client.stop()
await ctx.send('gestoppt')
@commands.command()
async def resume(self,ctx):
await ctx.voice_client.resume()
await ctx.send('Es geht weiter')
def setup(client):
client.add_cog(music(client))