为什么我的不和谐机器人发送垃圾邮件?

时间:2018-04-28 02:47:25

标签: python bots discord spam-prevention

我之前发布过这个相同的机器人并且感谢响应的人们。但是,虽然它最终变为现实并开启,但它开始发送垃圾信息的原因并不明显。我已经查看了拼写错误的代码,但无法找到任何错误。 这是代码:

import discord
from discord.ext.commands import bot
from discord.ext import commands
import asyncio
import time

Client = discord.Client()
client = commands.Bot (command_prefix = discord)

@client.event
async def on_ready() :
        print("Bepis machine fixed")

@client.event
   async def on_message(message) :
           if message.content == "bepis" :
                await client.send_message (message.channel, "bepis")



client.run("Censored Bot Token")
我需要帮助。如果罚款这个时候还有底线!事实证明我在括号前击中了空格键并且它不是那样的。非常感谢帮助,所以我可以继续添加到这个非常棒的机器人。

3 个答案:

答案 0 :(得分:1)

看起来您正在发送消息" bepis"响应第一个,然后每个,消息" bepis" - 大概你的第一个响应将作为输入提要的条目出现,这将触发第二个等等。

答案 1 :(得分:0)

原来我的机器人没有使用正确的格式。 每当你在不和谐服务器上说“bepis”时,机器人都会看到它然后按照预期的方式说“bepis”,但是,由于我的格式不正确,机器人看到自己说“bepis”并回复,好像别人在说“bepis”。

旧行:

if message.content == "bepis" :
    await client.send_message(message.channel, "bepis")

新行:

if message.content.startswith('bepis'):
    await client.send_message(message.channel, "bepis")

因此,如果您正在制作机器人,请确保使用正确的格式!

答案 2 :(得分:0)

您似乎已经知道问题是什么,来自您发布的this answer。但是你的解决方案远远不能解决问题。

只要将新消息发送到机器人可访问的任何地方,就会调用<{on_message;因此,当你输入&#34; bepis&#34;在不和谐中,僵尸程序用&#34; bepis&#34;回复,然后机器人发送的消息进入on_message,僵尸程序重新回复&#34; bepis&#34;,依此类推。 ..

简单的解决方案是检查消息的作者是否是任何机器人帐户,或者如果您愿意,如果消息的作者是您的机器人。

from discord.ext import commands

client = commands.Bot(command_prefix=None)

@client.event
async def on_ready():
    print("Bepis machine fixed")

@client.event
async def on_message(message):
    # or `if message.author.bot:`   # which checks for any bot account
    if message.author == client.user:
        return
    if message.content == "bepis":
        await client.send_message(message.channel, "bepis")

client.run("Token")

注意:我还修复了许多其他问题,例如多个未使用的导入,另一个Client和缩进。

FYI,command_prefix仅在功能命令处理命令时使用。当你使用on_message它没有用,这意味着你可以将它设置为None。