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

Python Discord Bot问题:bot=discord.client()无法运行求解决

解决Discord Bot中discord.client()无法运行的问题

核心问题1:类名大小写错误

Python是大小写敏感语言,你写的discord.client()是错误写法——Discord.py中客户端类的正确名称是首字母大写的discord.Client()。

核心问题2:缺少Intents配置

当前Discord API强制要求Bot声明所需的Intents(权限集),才能正常获取服务器数据、接收消息等。默认状态下多数关键权限是关闭的,必须显式启用。

配置步骤:

  1. 在代码中初始化Intents并开启必要权限:
intents = discord.Intents.default()
intents.message_content = True  # 开启消息内容读取权限,用于触发on_message事件
  1. 创建Client实例时传入intents参数:
bot = discord.Client(intents=intents)
  1. 登录Discord开发者后台(你的Bot管理页面),找到Privileged Gateway Intents板块,开启Message Content Intent开关。

问题3:.env文件格式问题

你.env文件里的DISCORD_TOKEN = '(我的机器人令牌)'存在多余空格和引号,建议修改为:

DISCORD_TOKEN=你的机器人令牌

(若令牌本身包含特殊字符,再用双引号包裹,比如DISCORD_TOKEN="abc123!@#")

修正后的完整代码

import discord
import os
from dotenv import load_dotenv

load_dotenv()
DISCORD_TOKEN = os.getenv("DISCORD_TOKEN")

# 配置Intents
intents = discord.Intents.default()
intents.message_content = True

# 正确初始化Client实例
bot = discord.Client(intents=intents)

@bot.event
async def on_ready():
    guild_count = 0
    for guild in bot.guilds:
        print(f"- {guild.id} (name: {guild.name})")
        guild_count += 1
    print(f"SampleDiscordBot is in {guild_count} guilds.")
    
@bot.event
async def on_message(message):
    # 避免Bot回复自己的消息
    if message.author == bot.user:
        return
    if message.content == "test":
        await message.channel.send("test")

bot.run(DISCORD_TOKEN)

额外提示

  • 确保安装了最新版discord.py:pip install -U discord.py
  • 检查Bot令牌是否正确,绝对不要泄露给他人
  • 确认Bot已邀请到目标服务器,且拥有发送消息等基础权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:47:22