You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord Bot仅被提及才响应含'congrats'消息的问题求助

解决Discord Bot仅在被@时响应包含'congrats'消息的问题

问题描述

我是编程新手,编写了一个Discord Bot,需求是当收到包含'congrats'的消息时自动回复。但目前Bot仅在被@提及的情况下才会响应(如发送'congrats @bot'会收到回复),单独发送'congrats'则无反应。添加打印语句调试后发现,Bot未被提及的情况下,打印内容为'Message received: ',已排除权限问题。

原代码

import discord

intents = discord.Intents.default()
intents.members = True
intents.guild_messages = True
intents.reactions = True

client = discord.Client(intents=intents)

@client.event
async def on_ready():
   print('Message received:', message.content)

@client.event
async def on_message(message):
    print('Message received:', message.content)

    if message.author == client.user:
        print(f"Message content: {message.content}")
        return

    if "congrats" in message.content.lower():
        await message.channel.send("Jinx!)
        print(message.channel)

client.run('TOKEN')

问题分析与解决方案

你的Bot出现这个问题主要有三个原因,逐一修复即可:

  1. on_ready事件存在语法错误
    on_ready事件触发时不存在message变量,原代码里的print('Message received:', message.content)会直接抛出NameError,导致Bot启动后无法正常运行,无法监听所有消息。需要把这行改为Bot就绪的提示语句。

  2. 缺少message_content Intent权限
    Discord默认关闭了message_content Intent,未开启该权限时,Bot无法读取未被@提及的消息内容,所以打印出的消息内容为空。需要在代码中添加intents.message_content = True,同时要去Discord开发者门户的Bot页面,找到"Privileged Gateway Intents"板块,开启"Message Content Intent"。

  3. 消息发送语句存在语法错误
    await message.channel.send("Jinx!)缺少闭合的双引号,会导致触发条件时抛出语法错误,无法正常发送回复。需要补上引号改为await message.channel.send("Jinx!")。

修正后的完整代码

import discord

intents = discord.Intents.default()
intents.members = True
intents.guild_messages = True
intents.reactions = True
intents.message_content = True  # 启用消息内容读取权限

client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print(f'Bot已登录,当前用户名:{client.user}')  # 修正on_ready事件的错误

@client.event
async def on_message(message):
    print('Message received:', message.content)

    if message.author == client.user:
        print(f"Message content: {message.content}")
        return

    if "congrats" in message.content.lower():
        await message.channel.send("Jinx!")  # 修复引号闭合问题
        print(message.channel)

client.run('你的TOKEN')

内容的提问来源于stack exchange,提问作者F Hh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 17:27:06