leonardo Asked:2020-08-24 02:47:06 +0000 UTC2020-08-24 02:47:06 +0000 UTC 2020-08-24 02:47:06 +0000 UTC 是否可以在内联按钮中创建功能?[关闭] 772 问题。是否可以在内联按钮中创建功能?同时,它会实现。电报机器人。电报机器人 ip 库。 python 1 个回答 Voted Best Answer Serg Bocharov 2020-08-24T05:22:37Z2020-08-24T05:22:37Z 内联按钮。这是什么?这些是特殊对象,它们“依附”特定消息并在一般情况下仅将其作用扩展到它们。这些按钮分为三种类型:URL 按钮、回调按钮和切换按钮。最简单的是链接按钮 (URL)。顾名思义,它们的目的只是将用户重定向到特定的网址。按照链接: @bot.message_handler(content_types=["text"]) def default_test(message): keyboard = types.InlineKeyboardMarkup() url_button = types.InlineKeyboardButton(text="Перейти на Google", url="https://google.com") keyboard.add(url_button) bot.send_message(message.chat.id, "Привет! Нажми на кнопку и перейди в поисковик.", reply_markup=keyboard) 回调按钮允许您在按下它们时执行任意操作。这完全取决于每个按钮本身携带的参数。因此,所有点击都将导致向机器人发送一个包含数据字段的 CallbackQuery 对象,该字段包含嵌入在按钮中的一些字符串,以及 Message 对象(如果消息是由机器人以正常模式发送的,或者inline_message_id 字段,如果消息是内联模式发送的。 # Обычный режим @bot.message_handler(content_types=["text"]) def any_msg(message): keyboard = types.InlineKeyboardMarkup() callback_button = types.InlineKeyboardButton(text="Нажми меня", callback_data="test") keyboard.add(callback_button) bot.send_message(message.chat.id, "Сообщение из обычного режима", reply_markup=keyboard) # Inline-режим с непустым запросом @bot.inline_handler(lambda query: len(query.query) > 0) def query_text(query): kb = types.InlineKeyboardMarkup() # Добавляем callback-кнопку с содержимым "test" kb.add(types.InlineKeyboardButton(text="Нажми меня", callback_data="test")) results = [] single_msg = types.InlineQueryResultArticle( id="1", title="Press me", input_message_content=types.InputTextMessageContent(message_text="Cообщение из inline-режима"), reply_markup=kb ) results.append(single_msg) bot.answer_inline_query(query.id, results) # В большинстве случаев целесообразно разбить этот хэндлер на несколько маленьких @bot.callback_query_handler(func=lambda call: True) def callback_inline(call): # Если сообщение из чата с ботом if call.message: if call.data == "test": bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="chat") # Если сообщение из инлайн-режима elif call.inline_message_id: if call.data == "test": bot.edit_message_text(inline_message_id=call.inline_message_id, text="inline") if __name__ == '__main__': bot.polling(none_stop=True) 最后一类按钮——开关(switch)。大多数情况下,需要它们来训练用户以内联模式使用机器人。要激活这种类型的按钮,您需要指定 switch_inline_query 参数,可以是空的或带有一些文本。在后一种情况下,该文本将立即替换在输入字段中,例如,以显示内联演示。这个按钮实际上是如何工作的?当您单击它时,Telegram 将提供选择一个聊天,之后它将替换您的机器人的昵称和(如果有)您在输入字段的 switch_inline_query 参数中指定的文本。 @bot.message_handler(content_types=["text"]) def any_msg(message): keyboard = types.InlineKeyboardMarkup() switch_button = types.InlineKeyboardButton(text="Нажми меня", switch_inline_query="Telegram") keyboard.add(switch_button) bot.send_message(message.chat.id, "Cообщение из обычного режима", reply_markup=keyboard) 一般来说,请阅读这些课程 - mastergroosha和aiogram库
内联按钮。这是什么?这些是特殊对象,它们“依附”特定消息并在一般情况下仅将其作用扩展到它们。这些按钮分为三种类型:URL 按钮、回调按钮和切换按钮。最简单的是链接按钮 (URL)。顾名思义,它们的目的只是将用户重定向到特定的网址。按照链接:
回调按钮允许您在按下它们时执行任意操作。这完全取决于每个按钮本身携带的参数。因此,所有点击都将导致向机器人发送一个包含数据字段的 CallbackQuery 对象,该字段包含嵌入在按钮中的一些字符串,以及 Message 对象(如果消息是由机器人以正常模式发送的,或者inline_message_id 字段,如果消息是内联模式发送的。
最后一类按钮——开关(switch)。大多数情况下,需要它们来训练用户以内联模式使用机器人。要激活这种类型的按钮,您需要指定 switch_inline_query 参数,可以是空的或带有一些文本。在后一种情况下,该文本将立即替换在输入字段中,例如,以显示内联演示。这个按钮实际上是如何工作的?当您单击它时,Telegram 将提供选择一个聊天,之后它将替换您的机器人的昵称和(如果有)您在输入字段的 switch_inline_query 参数中指定的文本。
一般来说,请阅读这些课程 - mastergroosha和aiogram库