我已经寻找了好几个小时,但对于为什么这对我不起作用我一无所获。 这是我的代码:
@bot.command()
async def ticket(ctx):
name = "tickets"
category = discord.utils.get(ctx.guild.categories, name=name)
guild = ctx.message.guild
ticket_id = randint(0, 100)
ticket_channel = await guild.create_text_channel(f"ticket-0{ticket_id}", category=category)
embed = discord.Embed(title="Tickets", description="Support will be with you shortly.\nTo close this ticket, react with :lock:.")
await ticket_channel.send(embed=embed)
await bot.add_reaction(embed, emoji=":lock:")
while True:
await bot.wait_for_reaction(emoji="\N{LOCK}", message=embed)
await bot.delete_channel(ticket_channel)
这是我得到的错误:
Ignoring exception in command ticket:
Traceback (most recent call last):
File "/home/runner/.local/share/virtualenvs/python3/lib/python3.7/site-packages/discord/ext/commands/core.py", line 83, in wrapped
ret = await coro(*args, **kwargs)
File "main.py", line 40, in ticket
await bot.add_reaction(embed, emoji=":lock:")
AttributeError: 'Bot' object has no attribute 'add_reaction'
任何帮助解决此问题的方法,我们将不胜感激。
答案 0 :(得分:0)
add_reaction
是Message
类的方法,而不是Bot
。 Embed
不属于Message
的子类。要获取与Message
关联的Embed
对象,您需要存储channel.send(embed=...)
的返回值
message = await ticket_channel.send(embed=embed)
await message.add_reaction('\N{LOCK}')