python - 发送具有“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 新手,不太了解它。不知道为什么会循环。
解决方案
机器人正在响应自己,因此您需要检查用户是否是机器人
@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))
推荐阅读
- javascript - React Native onPress 在其他进程运行时无法触发
- sql - 按行排序
- java - 为什么通过JNI创建的c++对象在后续调用中不再有效?
- python - 创建一个字谜函数
- php - 通过 PHP 使用 Gmail IMAP 读取电子邮件
- python - 使用 KMeans 对大量文本文件进行聚类
- python - ReLU 阈值中 numpy.ceil 和 numpy.clip 的缓慢性:瓶颈在哪里?
- arrays - 在 swift 中使用 for in 循环监视位置
- sql - 以下数据结构所需的数据透视
- apache-spark - 重复的列且不属于数据框的连接条件的列 - 如何在 PySpark 中删除?