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

Discord.py中startswith匹配正确短语失效问题求助

问题原因与解决方案

核心问题

你遇到的情况是因为Discord.py v2.0及以上版本要求必须显式启用message_content Intent才能读取用户发送的消息内容,而你当前代码里的discord.Intents.default()并不包含这个权限。机器人自身发送的消息不受此限制,所以能正常触发匹配逻辑。

解决步骤

  1. 开启开发者后台的消息内容权限
    登录Discord开发者门户,找到你的机器人应用,进入"Bot"页面,在"Privileged Gateway Intents"区域,开启"Message Content Intent"开关。

  2. 修改代码中的Intents配置
    更新代码,在初始化Intents时添加message_content=True:

    import discord
    
    # 初始化包含message_content的Intents
    intents = discord.Intents.default()
    intents.message_content = True
    
    client = discord.Client(intents=intents)
    
    @client.event
    async def on_ready():
        print('Roger victim. I m in as {0.user}'.format(client))
    
    @client.event
    async def on_message(message):
        if message.author == client.user:
            return
        
        if message.content.startswith('Hello'):
            await message.channel.send('Hola !')
        
        else:
            await message.channel.send('no, Hello')
    
    client.run('token value')
    

补充说明

  • 机器人自身的消息能触发匹配,是因为Discord允许机器人读取自己发送的消息内容,不需要额外的message_content权限,所以测试代码里机器人自发送的"Hello"能正常触发startswith判断。
  • 你之前尝试替换匹配字符为'.'或'/'无效,本质还是因为无法读取用户消息的内容,所以所有基于message.content的判断都无法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 01:29:56