Discord py

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Juestan
User
Beiträge: 2
Registriert: Freitag 19. November 2021, 19:02

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
SeBu
User
Beiträge: 16
Registriert: Samstag 4. Januar 2014, 11:36

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.)
Juestan
User
Beiträge: 2
Registriert: Freitag 19. November 2021, 19:02

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))
Antworten