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