Discord.py on_message导致循环

时间:2020-05-07 00:57:44

标签: python discord.py

我在discord.py中制作机器人时遇到了一个问题,我设法获得了命令和on_message彼此协同工作,虽然有些困难,但是现在所有命令都可以工作,但是如果我触发了on_message函数之一,它在没有明确原因的情况下循环了输出。我不确定如何解决此问题,也无法确定它。

import discord
from discord.ext import commands
import random
import os
import time
import typing

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

@bot.command()
async def test(ctx):
    await ctx.send('test')

with open("words.txt") as file:
    words = [word.strip().lower() for word in file.readlines()]
@bot.event
async def on_message(message):
    message_content = message.content.strip().lower()
    for word in words:
        if word in message_content:
            await message.channel.send(f"<CUSTOMSERVEREMOJI>")
bot.run('TOKEN')

2 个答案:

答案 0 :(得分:0)

on_message(message)函数应包含2个项目,以使其正常工作。

  1. 开始时,跳过机器人本身的消息-如下所示:
if message.author == bot.user:
    return
  1. 最后处理命令(因为先由on_message处理命令)-类似
await bot.process_commands(message)

答案 1 :(得分:0)

也可能是您已经多次运行了bot。您可以通过运行git push终止这些运行,并通过运行ps -ef | grep {filename}终止具有第二列编号的进程。