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"