Discord Bot重复回复问题求助:多实例运行导致指令多次响应
问题解决步骤
一、终止残留的Bot进程(解决重复回复问题)
你断开PyCharm连接时未终止进程,旧的Bot实例仍在后台运行,和新启动的Bot同时在线,因此会出现多次回复的情况。
- Windows:打开任务管理器 → 找到所有
python.exe或pythonw.exe进程 → 右键选择「结束任务」 - macOS/Linux:打开终端执行以下命令:
# 查找所有Python进程 ps aux | grep python # 找到对应Bot的进程ID(PID)后执行终止命令 kill <进程PID> # 若确定无其他Python程序在运行,可直接终止所有Python进程 pkill python
重新启动Bot后,重复回复的问题即可解决。
二、修正代码中的错误
你的代码存在两处问题:
- 拼写错误:
msg.conent应为msg.content,此错误会导致包含"meme"的消息无法触发回复 - 重复判断:两次检查
"amouranth"会触发两次发送操作,可合并为一个判断块
修正后的代码:
async def on_message(self, msg): if msg.author == self.user: return if msg.content == 'ping': await msg.channel.send('pong') elif "meme" in msg.content: await msg.channel.send('Go to reddit I just have Mommy pics') elif "gigachad" in msg.content: await msg.channel.send('https://i.kym-cdn.com/entries/icons/original/000/026/152/gigachad.jpg') elif "amouranth" in msg.content: await msg.channel.send('https://files.spieletipps.de/2c/2e/85/839491e6c61a69a14d7d6d9024_ciA2NDIDMmU4NGU2NjE3ZDI=.jpg') await msg.channel.send('MOMMY')
说明:用elif替代多个独立if,可减少不必要的条件判断,同时修正拼写错误、合并重复逻辑。
内容的提问来源于stack exchange,提问作者Mangasir
相关产品推荐
相关产品推荐

