Захват пользовательского ввода в виде строки в Discord.py переписать и вернуть указанный ввод в сообщении

#python #discord.py #discord.py-rewrite

#python #discord.py

Вопрос:

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

Пока я здесь:

     async def on_message(message):
        if message.content.startswith["=ok"]:
            await client.send_message(message.channel, message.content[6:])
  

… к сожалению, я считаю, что это было справедливо для предыдущей версии Discord.py перед переписыванием. По сути, я хочу, чтобы кто-то мог запустить command =pressf и заставить бота вернуть сообщение «Все, давайте отдадим дань уважения (string)!» Событие, вероятно, не лучший способ сделать это, но я в тупике.

Я изо всех сил пытался найти конкретный ответ в Интернете на свой вопрос, поэтому я очень признателен всем, кто мог бы указать мне правильное направление. Спасибо!

Ответ №1:

Я бы рекомендовал использовать более новое расширение Commands, гораздо проще реализовать то, что вы хотите. Смотрите Этот раздел специально для передачи всего, что пользователь вводит после команды, в переменную.

Существует официальный пример, который я бы рекомендовал посмотреть здесь: https://github.com/Rapptz/discord.py/blob/master/examples/basic_bot.py

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

1. Спасибо! Я посмотрю на это утром.

Ответ №2:

Вы должны использовать команды вместо on_message события. Вот простая команда:

 @client.command()
async def test(ctx):
    await ctx.send('A Simple Command')
  

ctx параметр — это параметр, который должны иметь все команды. Итак, когда вы вводите =test , он будет отправлен на этот канал A Simple Command .

Если мы дойдем до того, что вы пытаетесь сделать, вы можете использовать больше параметров, чем ctx . Вот как вы можете это сделать:

 @client.command()
async def pressf(ctx, *, mess):
    await ctx.send(mess)
  

В этом коде у вас есть еще 1 вызываемый параметр mess , а также есть * . Это означает mess , что параметр включает в себя каждое сообщение после =pressf . Поэтому, когда пользователь вводит тип =pressf Hello , он отправляет канал Hello .