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
相关产品推荐
相关产品推荐

