在消息中查找表情符号,然后使用 discord.py 做出反应

问题描述 投票:0回答:1

我正在尝试制作一个不和谐的机器人,它可以在频道的消息中找到表情符号,然后对这些消息做出反应。

我的密码是:

if message.channel.id == 645647298423613453:
      custom_emojis = re.findall(r'<:\w*:\d*>', message.content)
      custom_emojis = [e.split('<')[1].replace('>', '') for e in custom_emojis]
      for item in custom_emojis:
         await message.add_reaction(item)

它与所有自定义表情符号完美反应(我使用了herehere的资源)。所以,现在我必须对普通表情符号实施相同的操作。

第一个问题是如何查找发送的消息中是否有它们。在 thisthis 之类的线程中,它使用模块

emoji.UNICODE_EMOJI
。然而,正如这里所说,你不能使用它,对吧?

第二个问题是我发现如何与他们反应的唯一方法是this.

我知道

await message.add_reaction("🤩")
完美,但我缺少图标本身。

当我运行这个时:

msg = message.content.split()
print("msg is ", msg)

我得到这个列表:消息是

['🔪', '🏳️\u200d⚧️', 'dasdass', 'aadsdasasd', '<:test2:1066037921007808612>']
,而我最初的不和谐消息是刀图标、Trans 标志、两个随机字符串和一个自定义表情符号。

所以最后一个问题是:我如何获得非自定义表情符号,以及如何以我提取它们的格式与它们做出反应。

作为参考,我的代码托管在 replit.com 中,我使用这个 source 来制作机器人。

python discord discord.py emoji replit
1个回答
0
投票

所以我实施的解决方案是这样的:

首先我添加自定义表情符号:

custom_emojis = re.findall(r'<:\w*:\d*>', message.content)
      custom_emojis = [e.split('<')[1].replace('>', '') for e in custom_emojis]
      print(custom_emojis)
      print(message.content)
      for item in custom_emojis:
         await message.add_reaction(item)

然后我添加内置的表情符号:

s=message.content
      emoji_reactions = emojis.get(s)
      for item in emoji_reactions:
         await message.add_reaction(item)

这个实现有一个小问题。您没有按正确的顺序对表情符号做出反应。由于有两个不同的顺序命令。但最后有我想要的所有反应。

© www.soinside.com 2019 - 2024. All rights reserved.