【问题标题】:(Discord Bot) on_raw_reaction_add(payload) problem (Ticket System)(Discord Bot) on_raw_reaction_add(payload) 问题(票务系统)
【发布时间】:2020-07-31 22:48:47
【问题描述】:

嘿,我正在用 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'

有人可以帮帮我吗?

【问题讨论】:

  • 它说它缺少ctx 位置参数。你试过添加它吗?或者函数不应该有 ctx 位置参数?

标签: python discord discord.py-rewrite


【解决方案1】:

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)

【讨论】:

    【解决方案2】:

    on_raw_reaction_add事件只有一个参数,“payload”这个事件不能使用ctx,可以通过去掉参数中的ctx来解决错误。

    【讨论】:

      猜你喜欢
      • 2020-08-04
      • 2018-03-12
      • 2020-05-13
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 2020-01-22
      • 1970-01-01
      • 2021-03-25
      相关资源
      最近更新 更多