#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 однако.