Есть ли способ обойти ограничение в discord.py что, если вы планируете предоставить команде многословный аргумент, вы должны заключить его в кавычки?

#python #discord.py #quotes

Вопрос:

Возьмем этот пример.

 @bot.command()
async def example(ctx, text)
    await ctx.send(text)
 

И предположим, что пользователь использует эту команду следующим образом:

 example Hello world
 

Бот отправит «привет» в чат. Только если пользователь заключит предложение в кавычки, бот отправит все предложение целиком.

Итак, вернемся к моему вопросу — есть ли способ обойти это «ограничение»? Я хочу, чтобы программа могла возвращать все предложение целиком, даже если пользователь не использовал кавычки.

Комментарии:

1. Попробуй async def example(ctx, *, text): await ctx.send(text)

2. @GhostOps разве это не должно быть `ctx.отправить(» «.присоединиться(текст))? Я не использую раздор, так что это может быть неправильно

3. @2e0byo нет, проверь это еще раз….

4. @GhostOps О, черт возьми, я сошел с ума, извини…. пропустил ,

5. @2e0byo все в порядке, я изменил его в правке, лол

Ответ №1:

Попробуй это,

Попробуйте * использовать параметр в качестве параметра в своей функции, он вводит все предстоящие входные данные в text параметр

 @bot.command()
async def example(ctx, *, text)
    await ctx.send(text)
 

скажи мне, нормально ли это для тебя…

Комментарии:

1. это неправильный ответ на этот вопрос. это просто заставляет text аргумент быть только по ключевому слову. это совершенно не меняет семантику.

2. @ChristophRackwitz что ты имеешь в виду? ОП сказал, что он хочет рассмотреть все слова, переданные с помощью команды, как одно предложение, вызывает ли это у вас какие-либо проблемы, когда вы пытались это сделать?

3. простите мою реакцию. Я не ожидал, что эта библиотека злоупотребляет синтаксисом python подобным образом и на самом деле, похоже, анализирует список параметров обратного вызова команды, чтобы определить эту ситуацию: discordpy.readthedocs.io/en/stable/ext/commands/…

4. @ChristophRackwitz итак, вы хотите, чтобы команда считывала все слова, переданные с помощью команды, в виде списка, например *args?

5. У меня сложилось впечатление, что это придется сделать. Я не знал, что discord.py исследует подпись функции и обрабатывает единственный аргумент только для ключевого слова как «передайте необработанную команду, независимо от имени параметра». Я никогда не видел, чтобы это делалось, и это определенно не то, как предполагается использовать python. Это задокументировано в discord.py однако.