Как в функции указать один из аргументов, если он с пробелом?

Рейтинг: 0Ответов: 1Опубликовано: 27.02.2023

Я учусь пользоваться discord.py и у меня возник вопрос.

@bot.command()
async def send(ctx, member: discord.Member, *, text):
    await member.send(text)
    print('from '+ ctx.author.name + ' to ' + member.name + ': ' + text)

Существует такая функция, в которую я указываю пользователя и текст, который хочу отправить.

Вызов функции выглядит примерно так: 1send histor#8461 некоторый текст который я хочу отправить Получается пользователь это: histor#8461, а всё остальное текст.

А что если никнейм пользователя состоит из двух или более слов? Тогда например в запросе: 1send young histor#8461 некоторый текст который я хочу отправить Пользователем будет является: "young", а текстом "histor#8461 некоторый текст который я хочу отправить" В таком случае discord.py выдаст ошибку

Как решить данную проблему?

Ответы

▲ 0Принят

Первый вариант самый простой.

Вы можете принимать пользователя в качестве аргумента member: discord.Member. Тогда отметив пользователя @young histor будет не важно есть пробелы в тексте или нет.

@bot.command()
async def send(ctx, member: discord.Member, *, text): #!send @young histor text

Второй способ:

Взять аргумент, в нашем случае member, в кавычки.

@bot.command()
async def send(ctx, member, *, text): #!send '@young histor' text
    user = discord.utils.get(ctx.guild.members, member)