Редактирование встроенных кнопок клавиатуры с нажатием кнопки встроенной клавиатуры ⇐ Python
-
Anonymous
Редактирование встроенных кнопок клавиатуры с нажатием кнопки встроенной клавиатуры
Я хочу, чтобы после того, как пользователь нажал на мои встроенные кнопки клавиатуры в первом меню, которое появляется с командой запуска, загрузил другое меню с другими кнопками. Я хочу сгруппировать некоторые функциональные кнопки под первыми кнопками в команде запуска. но я не могу найти подходящую функцию и синтаксис для своего кода
Например, при запуске есть две кнопки (проверка серверов, проверка моей учетной записи), и после того, как пользователь нажимает «проверка серверов», мое сообщение меняется и с помощью различных кнопок спрашивает, какой сервер вы хотите проверить.
что-то вроде этого бота: https://t.me/vpcorebot
Здесь я создал команду запуска с помощью встроенных кнопок клавиатуры:
async def start (обновление: обновление, контекст: ContextTypes.DEFAULT_TYPE): ключи = [ [InlineKeyboardButton('1', url='google.com'), InlineKeyboardButton('2', url='yahoo.com')], [InlineKeyboardButton('3', callback_data='3'),InlineKeyboardButton('4', url='duckduckgo.com')], [InlineKeyboardButton('5',callback_data='5')] ] разметка = InlineKeyboardMarkup(ключи) с open('main_photo.jpg', 'rb') как f: img = f.read() ожидайте context.bot.send_photo( chat_id=update.efficient_chat.id, фото = изображение, подпись="Добро пожаловать", ответить_to_message_id=update.efficient_message.id, ответ_маркуп=разметка ) это работает, и я попытался использовать обратный вызов для редактирования или отправки нового сообщения с новыми кнопками и добавил кнопку, если пользователь хочет вернуться, чтобы начать командные кнопки
async def callback_query_handler(обновление: обновление, контекст: ContextTypes.DEFAULT_TYPE): ключи = [[InlineKeyboardButton('back', callback_data='0')]] МК = InlineKeyboardMarkup(ключи) запрос = update.callback_query call_back_data = запрос.данные если call_back_data == 3: с open('services.jpg', 'rb') как f: img = f.read() ожидайте context.bot.send_photo( chat_id=update.efficient_chat.id, фото = изображение, подпись = шапка, ответить_to_message_id=update.efficient_message.id, ответ_маркуп=МК ) элиф call_back_data == 0: начинать() но это не сработало, и Python не выдал никаких ошибок
я использую версию 20.2 python_telegram_bot
и вот как я заканчиваю свой код, если вам интересно:
def main(): app = Application.builder().token(TOKEN).read_timeout(600).get_updates_read_timeout(600).write_timeout(600).get_updates_write_timeout(600).pool_timeout(600).get_updates_pool_timeout(600).connect_timeout(600).get_updates_connect_timeout( 600).сборка() app.add_handlers( [ CommandHandler('старт', старт), CallbackQueryHandler (callback_query_handler) ] ) app.run_polling() если __name__=='__main__': основной()
Я хочу, чтобы после того, как пользователь нажал на мои встроенные кнопки клавиатуры в первом меню, которое появляется с командой запуска, загрузил другое меню с другими кнопками. Я хочу сгруппировать некоторые функциональные кнопки под первыми кнопками в команде запуска. но я не могу найти подходящую функцию и синтаксис для своего кода
Например, при запуске есть две кнопки (проверка серверов, проверка моей учетной записи), и после того, как пользователь нажимает «проверка серверов», мое сообщение меняется и с помощью различных кнопок спрашивает, какой сервер вы хотите проверить.
что-то вроде этого бота: https://t.me/vpcorebot
Здесь я создал команду запуска с помощью встроенных кнопок клавиатуры:
async def start (обновление: обновление, контекст: ContextTypes.DEFAULT_TYPE): ключи = [ [InlineKeyboardButton('1', url='google.com'), InlineKeyboardButton('2', url='yahoo.com')], [InlineKeyboardButton('3', callback_data='3'),InlineKeyboardButton('4', url='duckduckgo.com')], [InlineKeyboardButton('5',callback_data='5')] ] разметка = InlineKeyboardMarkup(ключи) с open('main_photo.jpg', 'rb') как f: img = f.read() ожидайте context.bot.send_photo( chat_id=update.efficient_chat.id, фото = изображение, подпись="Добро пожаловать", ответить_to_message_id=update.efficient_message.id, ответ_маркуп=разметка ) это работает, и я попытался использовать обратный вызов для редактирования или отправки нового сообщения с новыми кнопками и добавил кнопку, если пользователь хочет вернуться, чтобы начать командные кнопки
async def callback_query_handler(обновление: обновление, контекст: ContextTypes.DEFAULT_TYPE): ключи = [[InlineKeyboardButton('back', callback_data='0')]] МК = InlineKeyboardMarkup(ключи) запрос = update.callback_query call_back_data = запрос.данные если call_back_data == 3: с open('services.jpg', 'rb') как f: img = f.read() ожидайте context.bot.send_photo( chat_id=update.efficient_chat.id, фото = изображение, подпись = шапка, ответить_to_message_id=update.efficient_message.id, ответ_маркуп=МК ) элиф call_back_data == 0: начинать() но это не сработало, и Python не выдал никаких ошибок
я использую версию 20.2 python_telegram_bot
и вот как я заканчиваю свой код, если вам интересно:
def main(): app = Application.builder().token(TOKEN).read_timeout(600).get_updates_read_timeout(600).write_timeout(600).get_updates_write_timeout(600).pool_timeout(600).get_updates_pool_timeout(600).connect_timeout(600).get_updates_connect_timeout( 600).сборка() app.add_handlers( [ CommandHandler('старт', старт), CallbackQueryHandler (callback_query_handler) ] ) app.run_polling() если __name__=='__main__': основной()