Python 3.8.1 Discord.py 重写反应

Posted

技术标签:

【中文标题】Python 3.8.1 Discord.py 重写反应【英文标题】:Python 3.8.1 Discord.py Rewrite Reactions 【发布时间】:2020-08-14 05:04:58 【问题描述】:

我目前正在为我的服务器开发自定义不和谐机器人。我正在(尝试)创建一个投票系统。所以用户做-poll yn poll question。 yn 部分描述了问题的类型,例如是/否。这是我目前所拥有的:

@client.command()
async def poll(ctx, typee, *, msgg):
    if typee=='yn':
        msg = await ctx.channel.send("@everyone " + msgg)
        reactions = ['a']
        for emoji in reactions: 
            await client.add_reaction(msg, emoji)
        await ctx.message.delete()

运行时出现错误:

discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'Bot' object has no attribute 'add_reaction'

我正在使用 rewrite 和 python 3.8.1

【问题讨论】:

【参考方案1】:

我相信你想做await msg.add_reaction(emoji) 而不是await client.add...

我假设您知道 "a" 不是有效的表情符号,您可以找到名称字典与它们的 unicode here

另外,如果任何人都可以使用@everyone,也许最好避免包含@everyone!您可以将其限制为具有某些权限的人,或者您自己作为所有者。你可以用装饰器来做到这一点,你可以找到这些here 的大列表。

【讨论】:

【参考方案2】:

add_reaction 方法是消息对象的一部分,而不是客户端对象。你需要的是await msg.add_reaction(emoji) 而不是await client.add_reaction(msg, emoji)

如果您不知道'a' 不是有效的表情符号,另一件事是。

【讨论】:

以上是关于Python 3.8.1 Discord.py 重写反应的主要内容,如果未能解决你的问题,请参考以下文章

Discord bot python:discord.errors.ClientException:找不到ffmpeg

discord.py和discord.py的区别[voice]

在python中同时运行多个协程[Discord.py]

C-Python asyncio:在线程中运行 discord.py

Python discord.py 阅读全文

Bash:Python3:找不到命令(Windows,discord.py)