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

时间:2019-04-23 18:58:52

标签: python discord.py

我正在为我和我的朋友们建立一个Discord服务器,并且我需要一个能够在键入特定触发短语的情况下对任何消息添加20条反应的机器人。 我曾经有一个可以做到这一点的机器人,但它已经更新,并且仅限3次反应,但对我不起作用。

因此,在这里,我对编程有非常基本的了解,试图为此目的设置一个非常基本的机器人。

我已经尝试过在YT上找到的一个简单的bot命题,但它根本没有用,而且我不知所措,不知道为什么以及如何解决它。

所以这是我尝试过的命题,但没有使函数起作用:

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'

因此,如果任何有实际技能(考虑我的话,我会很容易打动我)的人都可以向正确的方向指点我,我会感到很高兴。

感谢您的时间和精力。

3 个答案:

答案 0 :(得分:2)

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

您正在使用discord.py版本v0.16中的语法,该语法不再受支持。
请参见the guide for migrating to v1,尤其是Models are Stateful section
您应该使用Message.add_reaction而不是Bot.add_reaction

答案 1 :(得分:0)

您正在查看旧教程。 Client.add_reaction已在discord.py 1.0中移至Message.add_reaction

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

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)

答案 2 :(得分:0)

先在replit网站注册

然后创建新的reply并创建node.js

并创建新文件并重命名 server.js

并复制这些代码

对于 server.js

const express = require('express');

const server = express();



server.all('/', (req, res)=>{

   res.setHeader('Content-Type', 'text/html');

   res.write('<link href="https://fonts.googleapis.com/css?family=Roboto Condensed" rel="stylesheet"> <style> body {font-family: "Roboto Condensed";font-size: 22px;} <p>Hosting Active</p>');

   res.end();

})



function keepAlive(){

   server.listen(3000, ()=>{console.log("Server is online!")});

}



module.exports = keepAlive;

对于 index.js

    const Discord = require('discord.js');
    const client = new Discord.Client();
    
    const mySecret = process.env['mysecrettoken']
    
    const keepAlive = require("./server");
    
    
    client.on('message', msg => {
    
    if (msg.attachments.size > 0) { //Make sure there are attachments at all
        var react = false; //Do we react to the message? Default to false
    
        msg.attachments.forEach(attachment => { //Check each attachment to see if it's a jpg, png, or jpeg
            if (attachment.url.includes(".jpg") || attachment.url.includes(".png") || attachment.url.includes(".jpeg")) {
                react = true; //It's an image! We want to react to the message
            };
        });
    
        if (react === true) { //React to the message
            msg.react('837608362719969291');
            msg.react('837608381283827734');
            msg.react('837608396659097640');
            msg.react('837608412337668096');
            msg.react('837608426821124096');
        };
    };
    
    }
    )
    
    keepAlive();


client.login(process.env.mysecrettoken);

创建您的第一个不和谐机器人并为其授予管理员权限。您可以观看 YouTube 视频,了解如何创建 dc bot 并将其授予管理员权限。

点击此网站 https://discord.com/developers/applications/

create your dc bot give admin rights regenerate and copy your toke paste to replit secret values

copy url add monitoring sites and your discord bot is ready to use 7/24 using

复制您的令牌并创建您的 mysecrettoken

监控站点示例:https://uptimerobot.com ???? 您的 dc 机器人已准备就绪