我为不和谐制作了一个多工具机器人,这是一个代码模块,安装的库是不和谐的、discord.ui的、回溯的、随机的、不和谐的、异步的--我有这个代码、whrite并使用YouTube视频进行了改编:
@client.command()
class select(discord.ui.Select):
def __init__(self):
options=[
discord.SelectOption(label="Man"),
discord.SelectOption(label="Woman"),
discord.SelectOption(label="Gender-Fluyd"),
discord.SelectOption(label="Non-Binary"),
discord.SelectOption(label="Other"),
]
super().__init__(placeholder="Gender", min_values=1, max_values=1, options=options)
async def callback(self, interaction: discord.Interaction):
user = interaction.user
guild = interaction.guild
if self.values[0] == "Man":
role = discord.utils.get(guild.roles, name="Man")
await user.add_roles(role)
await interaction.response.send_message("Role Man added!", ephemeral=True)
elif self.values[0] == "Woman":
role = discord.utils.get(guild.roles, name="Woman")
await user.add_roles(role)
await interaction.response.send_message("Role Woman added!", ephemeral=True)
elif self.values[0] == "Gender-Fluyd":
role = discord.utils.get(guild.roles, name="Gender-Fluyd")
await user.add_roles(role)
await interaction.response.send_message("Role Gender-Fluyd added!", ephemeral=True)
elif self.values[0] == "Non-Binary":
role = discord.utils.get(guild.roles, name="Non-Binary")
await user.add_roles(role)
await interaction.response.send_message("Role Non-Binary added", ephemeral=True)
elif self.values[0] == "Other":
role = discord.utils.get(guild.roles, name="Other")
await user.add_roles(role)
await interaction.response.send_message("Other Role added!", ephemeral=True)
class SelectView(discord.ui.View):
def __init__(self, *, timeout = 30):
super().__init__(timeout=timeout)
self.add_item(select())
class Role():
def __init__(self, client):
self.client = client
@commands.command()
async def role(self, ctx):
await ctx.send("What is your gender ?", view = SelectView())但是当我运行我的代码时,这个错误会出现在终端中:
Traceback (most recent call last):
File "C:\Users\Distool - User\distool\env\scripts\bot.py", line 85, in <module>
class select(discord.ui.Select):
File "C:\Users\Distool - User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\discord\ext\commands\core.py", line 1475, in decorator
result = command(name=name, cls=cls, *args, **kwargs)(func)
File "C:\Users\Distool - User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\discord\ext\commands\core.py", line 1748, in decorator
return cls(func, name=name, **attrs)
File "C:\Users\Distool - User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\discord\ext\commands\core.py", line 354, in __init__
raise TypeError('Callback must be a coroutine.')
TypeError: Callback must be a coroutine.有人能帮我吗??
我试图用async def替换await或def,但它没有功能。
发布于 2022-11-20 19:47:58
您将@client.command()放在“选择”菜单之上。选择菜单不能是命令..。
@client.command()
class select(discord.ui.Select):那会做什么呢?
创建命令,创建“选择”菜单,并在命令中发送“选择”菜单。不过,您似乎已经完成了所有这些工作,因此仅仅删除@client.command()-line可能就足够了。
额外信息
安装的库是不和谐的,discord.ui,回溯,随机,不协调,异步
它们是导入库,而不是已安装的库。其中一半是Python的一部分& discord.ui是discord.py库的一个子模块。
我试图通过等待或def取代异步def,但它没有功能。
它说必须是一个协同线,用def代替它将使它不再是一个协同线。这不可能是解决你的问题的方法。
如果您查看一下您的错误,就会在class select(discord.ui.Select)行上看到实际的错误,这意味着错误就在上面( @client.command()装饰器将其封装在内部)。
用await替换它也没有多大意义,这不是await关键字的工作方式。你不能只是随机地尝试一些事情,希望其中之一有效。你应该试着理解你在做什么,这一切都很简单和基本。
使用YouTube视频进行了改编:
该停止观看YouTube教程了。他们都教不好的代码,已经过时了(在discord.py 2.0之前),他们什么也不教你。你只需复制粘贴一个人在教程中所写的内容,你就不会知道它是如何工作的以及你在做什么。读读文档就好。
https://stackoverflow.com/questions/74511273
复制相似问题