Discord.py MyClient(Commands.Bot) und commands.Greedy
Posted: 29 Dec 2024, 05:42
https://discordpy.readthedocs.io/en/sta ... tml#greedy
Ich folge einem Tutorial, das ein untergeordnetes Befehlsobjekt erstellt. bot, um eine Hintergrundaufgabe auszuführen.
Ich versuche, den Befehl „discord.ext.commands.Greedy“ in einem Slash-Befehl zu implementieren, um eine Liste von „discord.Member“ zu übergeben Objekte, an denen gearbeitet werden soll.
Ich erhalte beim Start die angegebene Fehlermeldung TypeError: unsupported type annotation Greedy[Member]
example Code, um meinen Fehler zu reproduzieren
Ich verwende discord.py Version 2.4
Wie würde ich den Beispielcode korrigieren, damit ein Slash-Befehl mit mehr als einem discord.Member ausgeführt wird? und geben Sie den angegebenen Text aus.
Ein funktionierender Befehl sollte so aussehen
Ich folge einem Tutorial, das ein untergeordnetes Befehlsobjekt erstellt. bot, um eine Hintergrundaufgabe auszuführen.
Ich versuche, den Befehl „discord.ext.commands.Greedy“ in einem Slash-Befehl zu implementieren, um eine Liste von „discord.Member“ zu übergeben Objekte, an denen gearbeitet werden soll.
Ich erhalte beim Start die angegebene Fehlermeldung TypeError: unsupported type annotation Greedy[Member]
example Code, um meinen Fehler zu reproduzieren
Code: Select all
import discord
from discord.ext import commands
from discord import app_commands
class MyClient(commands.Bot):
def __init__(self, *, intents: discord.Intents):
super().__init__(command_prefix="/", intents=intents)
intents = discord.Intents.default()
intents.message_content = True
intents.members = True
client = MyClient(intents=intents)
@client.tree.command(name="slap")
async def slap(interaction: discord.Interaction, members: discord.ext.commands.Greedy[discord.Member], *, reason='no reason'):
slapped = ", ".join(x.name for x in members)
await interaction.response.send_message(f'{slapped} just got slapped for {reason}')
Wie würde ich den Beispielcode korrigieren, damit ein Slash-Befehl mit mehr als einem discord.Member ausgeführt wird? und geben Sie den angegebenen Text aus.
Ein funktionierender Befehl sollte so aussehen
Code: Select all
/slap members:@user1, @user2, @user3 reason="I am greedy"