嘿,我正在用Python开发Discord Bot。这是documentation。
当用户对消息做出反应时,该程序应在指定类别中创建文本通道。问题是:
@client.event
async def on_raw_reaction_add(payload, ctx):
message_id = payload.message_id
if message_id == 700856935012106281:
guild_id = payload.guild_id
discord.utils.find(lambda g : g.id == guild_id, client.guilds)
if payload.emoji.name == 'koperta':
print("zlotek")
channel = client.get_channel(payload.channel_id)
message = await channel.fetch_message(payload.message_id)
user = client.get_user(payload.user_id)
emoji = client.get_emoji(700845595103068211)
await message.remove_reaction(emoji, user)
name = '✅ OPENED TICKETS ✅'
category = discord.utils.get(ctx.guild.categories, name=name)
guild = ctx.guild
overwrites = overwrites = {
guild.default_role: discord.PermissionOverwrite(read_messages=False),
guild.me: discord.PermissionOverwrite(read_messages=True)
}
await guild.create_text_channel(f'Ticket-0001', category=category, overwrites=overwrites)
我得到了错误:
Ignoring exception in on_raw_reaction_add
Traceback (most recent call last):
File "C:\Users\Daniel\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\client.py", line 312, in _run_event
await coro(*args, **kwargs)
TypeError: on_raw_reaction_add() missing 1 required positional argument: 'ctx'
有人可以帮我吗?
答案 0 :(得分:0)
on_raw_reaction_add
仅接受一个参数,payload
@client.event
async def on_raw_reaction_add(payload):
message_id = payload.message_id
if message_id == 700856935012106281:
guild_id = payload.guild_id
guild = discord.utils.find(lambda g : g.id == guild_id, client.guilds)
if payload.emoji.name == 'koperta':
print("zlotek")
channel = client.get_channel(payload.channel_id)
message = await channel.fetch_message(payload.message_id)
user = client.get_user(payload.user_id)
emoji = client.get_emoji(700845595103068211)
await message.remove_reaction(emoji, user)
name = '✅ OPENED TICKETS ✅'
category = discord.utils.get(guild.categories, name=name)
overwrites = overwrites = {
guild.default_role: discord.PermissionOverwrite(read_messages=False),
guild.me: discord.PermissionOverwrite(read_messages=True)
}
await guild.create_text_channel(f'Ticket-0001', category=category, overwrites=overwrites)
答案 1 :(得分:0)
on_raw_reaction_add 事件只带一个参数,“payload”在这个事件中不能使用ctx,可以通过去掉参数中的ctx来解决。