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

Discord.py机器人发送消息问题:含空格用户名无法完整识别

问题解决:Discord机器人无法识别带空格的用户名

问题原因

原代码中使用discord.User类型作为参数时,discord.py的参数解析器默认按空格分割输入内容。当用户名带空格(如Trying hard#1234),解析器只会把第一个空格前的Trying当作用户参数传入,剩余部分被归为消息内容,导致无法正确识别目标用户。

你修改后的代码存在语法错误,user: ,*, discord.User的参数定义不符合Python语法,且*的位置错误,导致整个输入被错误判定为用户名的一部分。

解决方法

方法1:使用引号包裹带空格的用户标识(推荐)

无需修改代码,让用户执行命令时,用双引号把完整的「用户名#四位数字」括起来,示例命令:

!sender "Trying hard#1234" 这是要发送的消息内容

这样discord.py会正确将引号内的完整内容解析为user参数,剩余部分作为消息内容。

方法2:修改代码手动处理用户查找

如果不想让用户加引号,可以修改代码,先接收完整输入再拆分处理:

@bot.command()
async def sender(ctx, *, full_input: str):
    # 匹配「用户名#四位数字」+ 消息内容的格式
    import re
    pattern = r'(.*#\d{4})\s+(.*)'
    match = re.match(pattern, full_input)
    
    if not match:
        await ctx.send("请按照格式输入:用户名#四位数字 消息内容")
        return
    
    user_id_str, content = match.groups()
    username, discriminator = user_id_str.split('#')
    
    # 查找目标用户
    target_user = discord.utils.get(bot.users, name=username, discriminator=discriminator)
    if not target_user:
        await ctx.send("未找到该用户,请检查用户名和四位数字标识")
        return
    
    await target_user.send(content)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:12:37