我正在尝试使用带有discord.py模块的discordcomponents包制作一个按钮。
我有以下代码:
@client.command()
async def button(ctx):
await ctx.channel.send(
"This is a button test",
components = [
Button(style=ButtonStyle.blue, label="Button 1")
]
)
res = await client.wait_for("button_click")
if res.channel == ctx.channel:
member = await res.guild.get_member(res.user.id)
await member.add_role(853692936465940501)
await res.respond(
type=InteractionType.ChannelMessageWithSource,
content=f"{res.component.label} has been clicked! This is button 1"
)
但我似乎有问题,得到一个错误
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: object NoneType can't be used in 'await' expression
为什么guild.get_member返回NoneType?有人可能有一些关于如何使用discord.py按钮实现角色转换的示例代码吗?因为我似乎无法让工作
谢谢:(
首先,确保您也导入了Discord。
intents = discord.Intents.default()
intents.members = True
client = discord.Client(intents=intents)
然后你可以简单地让用户使用这个:user = client.get_user(INT)
@client.command()
async def button(ctx):
await ctx.channel.send(
"This is a button test",
components = [
Button(style=ButtonStyle.blue, label="Button 1")
]
)
res = await client.wait_for("button_click")
if res.channel == ctx.channel:
role = discord.utils.get(ctx.guild.roles, id = 853692936465940501)
await res.author.add_roles(role)
await res.respond(
type=4,
content=f"{res.component.label} has been clicked! This is button 1"
)