我想创建一个机器人,该机器人可以响应我服务器中特定用户发布消息的所有消息(使用default_emojis和custom_emojis列表中的表情)。
我浏览了一些过时的教程,甚至是大约一年前在这里提出的问题,但最终还是尝试了一下,但是服务器中什么都没有发生。该机器人会在线,但不会对任何事情做出反应。
这是我使用的代码:
import discord
from discord.ext import commands
from discord.ext.commands import Bot
import asyncio
bot = commands.Bot(command_prefix = "!")
async def on_ready():
print ("welcome_msg")
default_emojis = [
"\N{GRINNING FACE}",
]
custom_emojis = [
"staylovesmall"
]
async def react(message):
for emoji in default_emojis:
await message.add_reaction(emoji)
for emoji in message.guild.emojis:
if emoji.name in custom_emojis:
await message.add_reaction(emoji)
@bot.event
async def on_message(message):
if message.author.id == "user_id":
await react(message)
bot.run("<Bot ID here>")
使用if message.author.id == "<the user's id>" :
会破坏机器人,但使用
@bot.event
async def on_message(message):
if message.author == bot.user:
return
if "react to me" in message.content.lower():
await react(message)
我对python的了解非常有限,列表和元组之外的任何东西对我来说都是古希腊语。 有什么想法吗?非常感谢!
编辑:我将str替换为int,并尝试添加文本表情(例如:regional_indicator_a :),这给了我这个错误:
Ignoring exception in on_message
Traceback (most recent call last):
File "C:\Users\Kailash Seshadri\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\client.py", line 312, in _run_event
await coro(*args, **kwargs)
File "C:\Users\Kailash Seshadri\Desktop\React\bot.py", line 39, in on_message
await react(message)
File "C:\Users\Kailash Seshadri\Desktop\React\bot.py", line 31, in react
await message.add_reaction(emoji)
File "C:\Users\Kailash Seshadri\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\message.py", line 928, in add_reaction
await self._state.http.add_reaction(self.channel.id, self.id, emoji)
File "C:\Users\Kailash Seshadri\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\http.py", line 225, in request
raise HTTPException(r, data)
discord.errors.HTTPException: 400 BAD REQUEST (error code: 10014): Unknown Emoji
代码是:
default_emojis = [
"\N{GRINNING FACE}",
"\U0001F606"
"\U0001F1F8"
]
前两个单独工作正常,但是当我在第3个位置添加字母时,会出现错误,并且两个Unicode表情都不会注册。有任何想法吗?谢谢
答案 0 :(得分:0)
@Patrick Haugh所说的话:不和谐的雪花(如author.id
)在v1.0中已成为整数。 (documentation)
因此,您需要调整的代码如下:
假设您要检查的用户的ID为“ 123”。
@bot.event
async def on_message(message):
if message.author.id == 123: # removed the quotes here
await react(message)
答案 1 :(得分:0)
关于解决表情符号问题,我建议使用复制粘贴的表情符号而不是unicode字符串。 Emojipedia是一个很好的资源。