#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
.