【问题标题】:I'm getting no results while trying to make a reaction bot with discord.py我在尝试使用 discord.py 制作反应机器人时没有得到任何结果
【发布时间】:2021-02-05 20:19:09
【问题描述】:

我的代码是:

@client.event
async def on_raw_reaction_add(payload):

    message_id = payload.message_id
    if message_id == 768549092674502666:
        if payload.emoji.name == 'white_check_mark':
            role = '<:Member:765291826151555104>'
            await member.add_role(role)

我没有从调试器中得到任何结果,或者除非机器人添加了一个反应或登录,其他代码与这部分代码完全无关。

【问题讨论】:

  • 谁是member
  • 成员是反应的加法器,或者文档说
  • 但如果你说的是角色,那只是我在服务器中的角色
  • 好的,谢谢。我说的是变量member,而不是角色。它是否在您的代码中较早定义?
  • 不,在我的代码中没有其他地方提到它,我必须做 payload.member 吗?

标签: python discord discord.py


【解决方案1】:

在新版本的discord.py(1.5.x)中,有一些关于Intents的更新。 Intent 类似于权限,用于使用某些事件或获取成员、频道等。您需要在定义 client = discord.Bot(prefix='') 之前对其进行定义。

然后,您需要定义member 来添加角色。你可以简单地做member = payload.member

您还需要获得discord.utils.get() 的角色。不能用字符串定义角色。

import discord

intents = discord.Intents().all()
client = discord.Bot(prefix='', intents=intents)


@client.event
async def on_raw_reaction_add(payload):
    if payload.message_id == 768549092674502666 and payload.emoji.name == 'white_check_mark':
        guild = client.get_guild(guild id)
        role = discord.utils.get(guild.roles, name="role's name")
        await payload.member.add_roles(role)



如果您想了解更多有关 Intents 的信息,可以查看API References

【讨论】:

  • 现在它说:module 'discord' has no attribute 'Bot' 我应该填空吗?还是我遗漏了一些非常明显的东西
  • 你是如何在答案代码之前定义client的?
猜你喜欢
  • 2022-10-20
  • 2021-05-13
  • 1970-01-01
  • 2021-09-21
  • 1970-01-01
  • 2017-07-22
  • 1970-01-01
  • 2021-08-18
  • 2021-11-03
相关资源
最近更新 更多