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

Python开发Discord Bot启动报错:缺少intents参数求助

Discord Bot 运行报错:缺少intents参数的解决方法

我正在开发Discord Bot以测试和提升Python能力,按照教程编写了如下代码:

main.py

#main.py

import bot

if __name__ == '__main__':
    bot.run_discord_bot()

responses.py

#responses.py

import random 

def handle_response(message) -> str:
    p_message = message.lower()

    if p_message == "hello":
        return "Hi"
    
    if p_message == "roll":
        return str(random.randint(1,2))

    if p_message == "!help":
        return "This is a help message."

bot.py(原错误代码)

#bot.py

import discord
import responses

async def send_message(message, user_message, is_private):
    try: 
        response = responses.handle_response(user_message)
        await message.author.send(response)if is_private else await message.chanel.send(response)
    except Exception as e:
        print(e)

def run_discord_bot():
    TOKEN = '################################################################'
    client = discord.Client()

    @client.event
    async def on_ready():
        print(f'{client.user} is now runing!')


    @client.event
    async def on_message(message):
        if message.author == client.user: 
            return
        
        username = str(message.author())
        user_message = str(message.content)
        channel = str(message.channel)

        if user_message[0] == "?":
            user_message = user_message[1:]
            await send_message(message, user_message, is_private = True)
        else:
            await send_message(message, user_message, is_private = False)

    client.run(TOKEN)

运行代码时出现如下报错:

Traceback (most recent call last):
  File "c:\Users\#####\Desktop\Python Scripts\Discor_Bot\main.py", line 4, in <module>     
    bot.run_discord_bot()
  File "c:\Users\#####\Desktop\Python Scripts\Discor_Bot\bot.py", line 13, in run_discord_bot
    client = discord.Client()
TypeError: Client.__init__() missing 1 required keyword-only argument: 'intents'
PS C:\Users\#####\Desktop\Python Scripts\Discor_Bot>

错误原因与解决方法

核心错误原因

Discord.py v2.0+版本开始,创建discord.Client实例必须传入intents参数,这是Discord API的强制要求,用于明确机器人需要接收哪些事件权限(比如读取消息、成员变动等)。你参考的教程可能基于旧版本的Discord.py,所以没有这部分配置。

具体修复步骤

  1. 配置Intents参数
    在bot.py中添加intents的初始化代码,开启消息内容读取权限(因为你的机器人需要处理用户消息):

    intents = discord.Intents.default()
    intents.message_content = True
    

    然后创建Client时传入该参数:

    client = discord.Client(intents=intents)
    
  2. 修复代码中的其他小错误

    • message.chanel 拼写错误,改为 message.channel
    • str(message.author()) 多了括号,改为 str(message.author)(message.author是对象,不是方法)
    • 原responses.py中的判断条件是"Hello"、"Roll",但代码里转成了小写p_message = message.lower(),所以要把判断条件改成小写"hello"、"roll",否则无法匹配

修改后的完整bot.py代码

#bot.py

import discord
import responses

async def send_message(message, user_message, is_private):
    try: 
        response = responses.handle_response(user_message)
        await message.author.send(response) if is_private else await message.channel.send(response)
    except Exception as e:
        print(e)

def run_discord_bot():
    TOKEN = '################################################################'
    # 配置intents
    intents = discord.Intents.default()
    intents.message_content = True
    client = discord.Client(intents=intents)

    @client.event
    async def on_ready():
        print(f'{client.user} is now running!') # 修正拼写runing->running

    @client.event
    async def on_message(message):
        if message.author == client.user: 
            return
        
        username = str(message.author)
        user_message = str(message.content)
        channel = str(message.channel)

        if user_message.startswith("?"):
            user_message = user_message[1:]
            await send_message(message, user_message, is_private=True)
        else:
            await send_message(message, user_message, is_private=False)

    client.run(TOKEN)

额外注意

你需要在Discord开发者门户的机器人设置中,开启Message Content Intent权限(在"Privileged Gateway Intents"部分),否则机器人无法读取用户消息内容。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:10:51