Python Telegram Bot заставляет бота отвечать на сообщения - PullRequest
1 голос
/ 10 февраля 2020

В настоящее время я использую библиотеку python-telegram-bot для создания бота-телеграммы. Моя проблема в том, что я пытаюсь заставить моего бота ответить при использовании встроенной команды. Поэтому, когда пользователь отправляет бота @botname 'text', я хочу сохранить 'text' как string, а затем заставить моего бота отправить что-то обратно с этой переменной.

По какой-то причине я не могу получить это на работу. Я попробовал приведенный ниже код, но он не работает ... Я также опубликовал пример с github, который работает, но не так, как я хочу.

Мой код

def inlinequery(update, context):

"""Handle the inline query."""
 query = update.inline_query.query
 text = query.message_text
 print(text)
 update.message.reply_text(text)

Пример кода

#Sends message when @botname is used
def inlinequery(update, context):

"""Handle the inline query."""
query = update.inline_query.query
results = [
    InlineQueryResultArticle(
        id=uuid4(),
        title="Caps",
        input_message_content=InputTextMessageContent(
            query.upper())),
    InlineQueryResultArticle(
        id=uuid4(),
        title="Bold",
        input_message_content=InputTextMessageContent(
            "*{}*".format(escape_markdown(query)),
            parse_mode=ParseMode.MARKDOWN)),
    InlineQueryResultArticle(
        id=uuid4(),
        title="Italic",
        input_message_content=InputTextMessageContent(
            "_{}_".format(escape_markdown(query)),
            parse_mode=ParseMode.MARKDOWN))]

update.inline_query.answer(results)


def main():
    # Get the dispatcher to register handlers
dp = updater.dispatcher
dp.add_handler(InlineQueryHandler(inlinequery))

# Start the Bot
updater.start_polling()

if __name__ == '__main__':
main()

1 Ответ

1 голос
/ 11 февраля 2020

Вы можете использовать объект User встроенного запроса, чтобы отправить им сообщение. Имейте в виду, что пользователь должен начать личный чат с ботом, прежде чем бот сможет отправлять им сообщения.

Я изменил вашу попытку. Это должно работать, но я не проверял это:

def inlinequery(update, context):
    """Handle the inline query."""
    query = update.inline_query
    text = query.query
    print(text)
    query.from_user.send_message(text)

Документы по теме:

...