Python 如何创建一个简单的机器人,对包含特定触发语句的消息进行自动反应?

Python 如何创建一个简单的机器人,对包含特定触发语句的消息进行自动反应?,python,discord.py,Python,Discord.py,我正在为我和我的朋友们设置一个Discord服务器,我需要一个机器人,它能够在输入某个触发短语的任何消息中添加20个反应。 我曾经有一个机器人,可以做到这一点,但它已经更新,并限制为3个反应,这是不适合我的工作 因此,我在这里,以我对编程的基本理解,试图为这个唯一的目的建立一个非常基本的机器人 我已经尝试了在YT上发现的一个简单的机器人方案,但它根本不起作用,我不知道为什么以及如何修复它 这是我尝试过的建议,但没有成功实现: import discord from discord.ext

我正在为我和我的朋友们设置一个Discord服务器,我需要一个机器人,它能够在输入某个触发短语的任何消息中添加20个反应。 我曾经有一个机器人,可以做到这一点,但它已经更新,并限制为3个反应,这是不适合我的工作

因此,我在这里,以我对编程的基本理解,试图为这个唯一的目的建立一个非常基本的机器人

我已经尝试了在YT上发现的一个简单的机器人方案,但它根本不起作用,我不知道为什么以及如何修复它

这是我尝试过的建议,但没有成功实现:

import discord
from discord.ext    import commands
from discord.ext.commands   import Bot
import asyncio

bot = commands.Bot(command_prefix='!')

@bot.event
async def on_ready():
    print ("Ready to react, boss !")


@bot.event
async def on_message(message):
    if(message.channel.id == "550373218758688790"):
        await bot.add_reaction(message, ":war_tank:552569109108490252")


bot.run("NTY5OTQ0NTMyMzIyNjE1MzI2.XL4IBg.WH-Ms1DWKJN8qGBBLAxdGye0q2I")
所以这一个应该对每一条信息都做出反应,我计划从那里开始工作,但它甚至没有起作用。 相反,我在cmd日志中为每条消息获取了一条消息,如下所示:

Ignoring exception in on_message
Traceback (most recent call last):
  File "G:\Jeux\Discord Bot\lib\site-packages\discord\client.py", line 255, in _run_event
    await coro(*args, **kwargs)
  File "G:\Bureau\TotemReact Bot\bot.py", line 16, in on_message
    await bot.add_reaction(message, ":war_tank:552569109108490252")
AttributeError: 'Bot' object has no attribute 'add_reaction'
因此,如果有任何一个有实际技能的人考虑到我,我会很容易被打动,如果他能为我指出正确的方向,我会非常高兴


感谢您的时间和关注。

您正在阅读旧教程。Client.add_反应已在discord.py 1.0中移动到

您描述的功能可能类似于:

default_emojis = [
    "\N{GRINNING FACE}",
    "\N{KEYCAP DIGIT ONE}"
]

custom_emojis = [
    "war_tank"
]

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 == bot.user:
        return
    if "react to me" in message.content.lower():
        await react(message)

你正在看旧的教程。Client.add_反应已在discord.py 1.0中移动到

您描述的功能可能类似于:

default_emojis = [
    "\N{GRINNING FACE}",
    "\N{KEYCAP DIGIT ONE}"
]

custom_emojis = [
    "war_tank"
]

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 == bot.user:
        return
    if "react to me" in message.content.lower():
        await react(message)

首先,如果您还没有更改令牌,那么您现在就要更改令牌

您使用的语法来自不再受支持的discord.py版本v0.16。 具体来说,请参见。
您应该使用而不是Bot.add\u reaction。

首先,如果您还没有更改您的令牌,您现在需要更改您的令牌

您使用的语法来自不再受支持的discord.py版本v0.16。 具体来说,请参见。
您应该使用而不是Bot。添加\u反应。

您现在需要为Bot重新创建令牌!任何人都可以使用您问题中的当前机器人控制您的机器人,并将其用于恶意目的。编辑它是不够的,因为任何人都有权访问编辑历史记录。您需要立即为bot重新创建您的令牌!任何人都可以使用您问题中的当前机器人控制您的机器人,并将其用于恶意目的。编辑它是不够的,因为任何人都可以访问编辑历史。非常感谢,它工作得很好。我现在正努力做到只有具有一定角色的人才能引发这种反应,但我仍然在沮丧中睁大眼睛。我知道为这样一件小事要求这么多信息有点过分,但我真的很感激。无论如何,谢谢你的第一点!非常感谢,它运行得很好。我现在正努力做到只有具有一定角色的人才能引发这种反应,但我仍然在沮丧中睁大眼睛。我知道为这样一件小事要求这么多信息有点过分,但我真的很感激。无论如何,谢谢你的第一点!