Как изменить встроенный обработчик бота в Telegram - PullRequest
0 голосов
/ 15 февраля 2020

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

from telegram import InlineQueryResultArticle, InputTextMessageContent
def inline_caps(update, context):
    query = update.inline_query.query
    if not query:
        return
    results = list()
    results.append(
        InlineQueryResultArticle(
            id=query.upper(),
            title='Caps',
            input_message_content=InputTextMessageContent(query.upper())
        )
    )
    context.bot.answer_inline_query(update.inline_query.id, results)

from telegram.ext import InlineQueryHandler
inline_caps_handler = InlineQueryHandler(inline_caps)
dispatcher.add_handler(inline_caps_handler)

Я неоднократно пытался изменить этот встроенный обработчик запросов, но ничего не помогало. Это не работает:

диспетчер. remove_handler (inline_caps_handler)

Я также попытался включить встроенный режим, а затем снова включить его с помощью BotFather, но старый обработчик все еще остается нетронутым на сайте реактивации встроенного режима.

Создание нового обработчика и добавление его также не работает.

1 Ответ

0 голосов
/ 20 апреля 2020

Вы попробовали еще раз?

Я следовал руководству (вплоть до "dispatcher.add_handler (inline_caps_handler)"), и это не доставило мне проблем. Закончив играть с заглавными буквами, я сделал dispatcher.remove_handler (inline_caps_handler), и он перестал преобразовывать в верхний регистр слова, которые я пишу. Затем я добавил другой обработчик (конвертер в нижнем регистре), и бот был обновлен.

Вот пример, который я использую в интерактивной оболочке Python (которая очень похожа на туториал, но обрезает не встроенный материал):

from telegram.ext import Updater
updater = Updater(token='TOKEN', use_context=True)

dispatcher = updater.dispatcher

import logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
                     level=logging.INFO)

updater.start_polling()

from telegram import InlineQueryResultArticle, InputTextMessageContent
def inline_caps(update, context):
    query = update.inline_query.query
    if not query:
        return
    results = list()
    results.append(
        InlineQueryResultArticle(
            id=query.upper(),
            title='Caps',
            input_message_content=InputTextMessageContent(query.upper())
        )
    )
    context.bot.answer_inline_query(update.inline_query.id, results)

from telegram.ext import InlineQueryHandler
inline_caps_handler = InlineQueryHandler(inline_caps)
dispatcher.add_handler(inline_caps_handler)

dispatcher.remove_handler(inline_caps_handler)
def inline_lower(update, context):
    query = update.inline_query.query
    if not query:
        return
    results = list()
    results.append(
        InlineQueryResultArticle(
            id=query.lower(),
            title='lows',
            input_message_content=InputTextMessageContent(query.lower())
        )
    )
    context.bot.answer_inline_query(update.inline_query.id, results)

from telegram.ext import InlineQueryHandler
inline_lower_handler = InlineQueryHandler(inline_lower)
dispatcher.add_handler(inline_lower_handler)

и после окончания испытаний.

updater.stop()
...