Я новичок в Python и новичок в Stack Overflow, извините за свои ошибки ...Почему, если id = '0' в "InlineQueryResultArticle", выбранный элемент не вызывает код "on_chosen_inline_result"?
Я использую Telepot для написания бота для Telegram.
При работе со встроенными результатами я могу только сделать код в on_chosen_inline_result
выполнить для каждой статьи, которую я выбираю, кроме первого созданного.
def on_inline_query(msg):
query_id, from_id, query_string = telepot.glance(msg, flavor='inline_query')
tastiera_inline = InlineKeyboardMarkup(*some_keyboard*)
articles = []
if query_string:
found_conte = fun.get_conta(titolo=query_string)
if found_conte == 1:
return
for conta_inline in found_conte:
articles.append(InlineQueryResultArticle(
id=str(conta_inline['id']),
title=conta_inline['titolo'],
input_message_content=InputTextMessageContent(*some_content*),
reply_markup=tastiera_inline,
description=conta_inline['testo'],
thumb_url=*some_url*,
))
else:
if fun.get_conta('all') == 1:
return
for conta_inline in fun.get_conta('all'):
articles.append(InlineQueryResultArticle(
id=str(conta_inline['id']),
title=conta_inline['titolo'],
input_message_content=InputTextMessageContent(*some_content*),
reply_markup=tastiera_inline,
description=conta_inline['testo'],
thumb_url=*some_url*,
))
bot.answerInlineQuery(query_id, articles)
def on_chosen_inline_result(msg):
print(msg)
bot = telepot.Bot(TOKEN)
bot.message_loop({'chat': on_chat_message,
'inline_query': on_inline_query,
'chosen_inline_result': on_chosen_inline_result
},
run_forever='Listening ...')
print(msg)
работает отлично для каждой статьи я выбираю из списка ответов на запрос инлайн для первого созданного исключения. Я действительно смущен ...
Что действительно сбивает с толку, так это то, что я не думаю, что имею контроль над тем, что происходит, когда я выбираю статью из списка в Telegram, поэтому кажется странным, что иногда это вызывает on_chosen_inline_result
код и другие моменты нет.
EDIT: Похоже, что если id='0'
в InlineQueryResultArticle
выбранный результат не вызывает код внутри on_chosen_inline_result
, но я не 100% уверен, что это является причиной, и я действительно не знаю, почему, в любом случае ..
PS: Я не знаю, сколько кода необходимо для понимания проблемы без копирования всего здесь. Я могу, конечно, изменить вопрос и добавить дополнительный код, если это необходимо.
Что означает слово «улов» означает в _I можно только поймать 'chosen_inline_result' если ..._? –
Я имею в виду, что код в 'on_chosen_inline_result' выполняется только в том случае, если у меня есть несколько объектов в db, используемых для создания статей. –
Код 'on_chosen_inline_result()' очень прост, поэтому я не думаю, что проблема есть. Я заметил возможную проблему в 'on_inline_query()' - она не всегда возвращает список статей. Если 'get_conta()' возвращает 1, то он возвращает список статей, но в противном случае он ничего не возвращает и поэтому возвращает 'None' по умолчанию. –