Discord.py 机器人不会在聊天中打印 SIMPLE 变量



我想要的是机器人说Snacktoshis: 5,但它不会在聊天中打印变量。

这是我的代码:

from discord import *
from discord.ext import *
from discord.ext.commands import Bot
from discord.ext.commands import *
import random
import asyncio
from discord import Game
from discord.ext.commands import Bot
import aiohttp
import discord
import requests
import time
BOT_PREFIX = ("?", "!")
client = Bot(command_prefix=BOT_PREFIX)
TOKEN ="3812236138921603126360103210983inserttoken21831382ufsfuadha"

@client.command()
async def bal():
snack = 0
await client.say("Snacktoshis:",snack)

client.run(TOKEN)

我的错误消息是:

Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/discord/ext/commands/bot.py", line 846, in process_commands
yield from command.invoke(ctx)
File "/usr/local/lib/python3.6/site-packages/discord/ext/commands/core.py", line 374, in invoke
yield from injected(*ctx.args, **ctx.kwargs)
File "/usr/local/lib/python3.6/site-packages/discord/ext/commands/core.py", line 54, in wrapped
raise CommandInvokeError(e) from e
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: send_message() takes from 2 to 3 positional arguments but 4 were given

我知道我有很多未使用的模块。

我假设你的意思是这样的:

@bot.command()
async def bal():
snack = 0
await bot.say("Snacktoshis: %d" %snack)

其中变量应该是消息的一部分,而不是方法调用的单独参数。

help('discord.ext.commands.Bot.say')

discord.ext.commands.Bot.say = say(self, *args, **kwargs)

等效于执行的帮助程序函数

self.send_message(message.channel, *args, **kwargs)

因此,从您的client.say调用发送到send_message的四个参数是clientmessage.channel"Snacktoshis:"snack。 您希望要发送的消息是单个字符串,而不是两个单独的参数。

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

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