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

如何修复Discord Python机器人踢人命令的TypeError错误

修复Discord Python机器人踢人命令的TypeError错误

你遇到的这个错误很明确——TypeError: Can't convert 'list' object to str implicitly,问题出在消息拼接的环节,让我给你拆解原因和修复方法:

问题根源

当你执行messageParsed = message.content.split()后,messageParsed[2:]会返回一个列表,里面装着命令里所有的理由单词。而你直接把这个列表和前面的格式化字符串拼接时,Python没法自动把列表转换成字符串,所以抛出了这个类型错误。

修复方法

你需要把这个列表转换成完整的字符串,用' '.join(msg)就能实现——它会把列表里的每个元素用空格连接起来,变成通顺的理由文本。

修改后的核心代码

把发送通知消息的那行代码改成下面这样(用格式化字符串更清晰):

await client.send_message(
    discord.Object(id=serverchannel),
    '{0} was kicked by {1}, with reason:"**{2}**"'.format(
        member.mention, 
        message.author.mention, 
        ' '.join(msg)
    )
)

如果你偏好原来的拼接写法,也可以这样调整:

await client.send_message(
    discord.Object(id=serverchannel),
    '{0} was kicked by {1}, with reason:"**'.format(member.mention, message.author.mention) 
    + ' '.join(msg) 
    + '**"'
)

额外优化提示

建议你加个判断逻辑:如果用户没输入理由,msg会是空列表,' '.join(msg)会返回空字符串,这时可以给个默认理由,让通知更友好:

reason = ' '.join(msg) if msg else 'No reason provided'
await client.send_message(
    discord.Object(id=serverchannel),
    '{0} was kicked by {1}, with reason:"**{2}**"'.format(
        member.mention, 
        message.author.mention, 
        reason
    )
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:39:11