首页 > 解决方案 > 发送具有“pedro”的消息后,发送函数循环。没有 .lower 可以正常工作,但是当我将其添加回来时,它是否开始循环

问题描述

如果我有.lower(),就会出现这个错误。没有它它可以正常工作,但是除了“pedro”之外,它不会回复任何东西

import os
import discord

TOKEN = os.environ['PedroBotKey']

client = discord.Client()


@client.event
async def on_ready():
    print(f'{client.user} (aka Pedro) has connected to Discord!')

@client.event
async def on_message(message):
  if "pedro" in message.content.lower():
    emoji = discord.utils.get(client.emojis, name='SmolSmolPedromin')
    await message.channel.send(str(emoji))

client.run(TOKEN)

它循环播放Message.channel.send。我是 python 新手,不太了解它。不知道为什么会循环。

标签: pythondiscord.py

解决方案


机器人正在响应自己,因此您需要检查用户是否是机器人

@client.event
async def on_message(message):
  if "pedro" in message.content.lower() and not message.author.bot:
    emoji = discord.utils.get(client.emojis, name='SmolSmolPedromin')
    await message.channel.send(str(emoji))

推荐阅读