首页 > 解决方案 > discord python bot - 如何不使用 on_message 发送消息

问题描述

我正在制作一个不和谐的 python 机器人代码,如果我对表情符号做出反应,机器人将在频道上发送一条消息。

async def on_reaction_add(reaction, user):
    if (reaction.emoji == '\N{VICTORY HAND}'):
        await message.channel.send('hello')

但是我无法发送消息...(我的英语很糟糕...对不起)

标签: pythonbotsdiscord.py

解决方案


需要考虑的几个项目。

  1. 考虑使用on_raw_reaction_add而不是on_reaction_add捕获所有消息反应,而不仅仅是缓存的反应。
  2. 对于您的表情符号比较,您可以使用 pythonemoji.demojize()获取表情符号的文本表示。pypi 表情符号 0.5.4。Discord 没有将胜利手表情符号视为“\N{VICTORY HAND}”,它只是:V:。如果你将鼠标悬停在它上面,你会看到。
  3. 要发送消息,您需要设置一个频道。

尝试:

import emoji

@client.event
async def on_raw_reaction_add(payload):
    if emoji.demojize(str(payload.emoji)) == ':victory_hand:':
        channel = client.get_channel(payload.channel_id)
        await channel.send('hello')

推荐阅读