Бот выполняет только одну команду - PullRequest
6 голосов
/ 12 июля 2020

Я пытаюсь создать бота, где, например, когда вы набираете "! Say hello world", бот отвечал бы "Hello World". Но когда я пытаюсь использовать пробелы, это не работает.

Поэтому, когда я просто набираю "! Say Hello", он показывает следующее:

As you can see it works fine but when I put a space for example "!say hello world" it shows this:

Как видите, он печатает только «Привет» и действует так, как будто я не говорил «Мир».

Вот мой код:

@client.command()
async def say(ctx, arg):
    await ctx.send(arg)

1 Ответ

4 голосов
/ 12 июля 2020

См. Здесь: Команды

Поскольку позиционные аргументы являются обычными Python аргументами, вы можете иметь столько, сколько захотите:

@bot.command()
async def test(ctx, arg1, arg2):
    await ctx.send('You passed {} and {}'.format(arg1, arg2))

Иногда вы хотите, чтобы пользователи передавали неопределенное количество параметров. Библиотека поддерживает это аналогично тому, как параметры списка переменных выполняются в Python:

@bot.command()
async def test(ctx, *args):
    await ctx.send('{} arguments: {}'.format(len(args), ', '.join(args)))
...