这是我的代码:
#Ticket
@client.command(pass_context=True)
async def setuppartnership(ctx):
guild = ctx.guild
embed = discord.Embed(
title = 'Richiesta Partnership',
description = 'Vuoi fare partnership? Usa la reazione qui sotto per creare un nuovo ticket.',
color=0x53eeff
)
msg = await ctx.send(embed=embed)
await msg.add_reaction("📩")
msg = await msg.channel.fetch_message(msg.id)
while True:
def check(reaction, user):
return str(reaction) == '📩' and ctx.author == user
await client.wait_for("reaction_add", check=check)
ticket_channel = await guild.create_text_channel(name=f'partnership・{ctx.author.name}')
await ticket_channel.set_permissions(ctx.author, send_messages=True, read_messages=True, add_reactions=True, embed_links=True, attach_files=True, read_message_history=True, external_emojis=True)
await ticket_channel.set_permissions(ctx.guild.get_role(ctx.guild.id), send_messages=False, read_messages=False)
#这段代码工作,但我有一个问题:只有那些执行命令生成反应消息打开票证可以打开一个,让我解释一下:如果我运行命令!setuppartnership它生成一个命令,我点击他打开票证的反应,但他只为执行命令的我创建它,因为如果另一个帐户点击反应什么都没有发生,你可以帮助我。
请勿使用循环等待事件。
您可以在这里找到事件列表及其功能:https://discordpy.readthedocs.io/en/stable/api.html?highlight=reaction#event-reference
你要找的是on_raw_reaction_add()
你可以用payload.member
得到做出反应的人的成员对象
注意:你必须检查payload.message_id == <your-message-id>