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

Discord.py机器人无法在聊天中输出简单变量的问题排查

看起来你遇到的问题是因为client.say()的参数传递错误,让我帮你解决这个问题:

错误原因

你在bal命令里写了:

await client.say("Snacktoshis:",snack)

但在旧版discord.py中,client.say()只接受一个完整的字符串作为消息内容,你传递了两个独立的参数,这就导致了报错里提到的“参数数量过多”问题。

解决方法

你需要把文字和变量合并成一个字符串,这里有几种常用的方式:

方法1:使用F-string(推荐,Python3.6+可用)

这是最简洁直观的写法:

await client.say(f"Snacktoshis: {snack}")

方法2:使用字符串格式化

如果你的Python版本较低,可以用这种方式:

await client.say("Snacktoshis: %d" % snack)

或者:

await client.say("Snacktoshis: {}".format(snack))

优化后的完整代码

另外,你有很多未使用的导入,可以清理掉,让代码更简洁:

from discord.ext.commands import Bot

BOT_PREFIX = ("?", "!")
client = Bot(command_prefix=BOT_PREFIX)
TOKEN = "你的真实令牌"

@client.command()
async def bal():
    snack = 5  # 这里把snack设为你想要的数值
    await client.say(f"Snacktoshis: {snack}")

client.run(TOKEN)

这样修改后,执行?bal或者!bal命令时,机器人就会正确输出Snacktoshis: 5了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:42:42