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

discord.py机器人仅私信响应,服务器频道无反应问题求助

解决Discord机器人仅响应私信不响应服务器频道的问题

问题根源

你的机器人无法接收服务器频道消息,核心原因是未启用message_content意图。Discord API v9及以后版本中,message_content属于特权意图,必须同时在代码中声明、并在Discord开发者后台开启,否则机器人只能读取私信消息,无法获取服务器内的消息内容。

修复步骤

  • 修改代码中的意图配置
    在原代码的意图初始化部分添加intent.message_content = True,确保机器人有权限读取服务器消息内容,修改后的代码片段:

    intent = discord.Intents.default()
    intent.members = True
    intent.message_content = True  # 新增此行开启消息内容意图
    client = commands.Bot(command_prefix="/", intents = intent, description="<desc>")
    
  • 在Discord开发者后台开启特权意图

    1. 打开Discord开发者平台,找到你的机器人应用
    2. 进入「Bot」页面,向下滚动到「Privileged Gateway Intents」区域
    3. 开启「Message Content Intent」开关并保存设置
  • 额外验证项

    • 确认机器人在目标服务器频道拥有「发送消息」「读取消息历史」权限(管理员权限已包含这些权限,可快速核对)
    • 确认输入的命令前缀/正确,未与其他机器人或系统功能冲突

修改后的完整代码

import discord
from discord.ext import commands
import os
import sys

def clear():
  if sys.platform == "linux":
    os.system("clear")
  if sys.platform == "windows":
    os.system("cls")
  

intent = discord.Intents.default()
intent.members = True
intent.message_content = True  # 启用消息内容意图
client = commands.Bot(command_prefix="/", intents = intent, description="<desc>")

@client.event
async def on_ready():
    print(f"bot: {client.user} is ready")

@client.event
async def on_member_join(member):
    print(f"Member, {member} Joined")

@client.event
async def on_member_remove(member):
  print(f"{member}, left")

@client.command()
async def hi(ctx):
  await ctx.send("Hi")

@client.event
async def on_message(message):
  await client.process_commands(message)

client.run("你的机器人Token")  # 注意:切勿公开泄露机器人Token

clear()

重要提醒:永远不要将机器人Token公开分享,防止账号被恶意利用。

内容的提问来源于stack exchange,提问作者3bd2lra7man

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:35:19