Answer the question
In order to leave comments, you need to log in
How to add a handler to several buttons in the aiogram telegram bot?
Everyone has one that performs user registration, I was able to make 2 buttons, but I can’t figure out how to make a handler for the second button so that the bot responds to it, and not just does nothing
from cgitb import text
import logging
from msvcrt import kbhit
import re
from aiogram import Bot, Dispatcher, executor, types
import markups as nav
from db import Database
TOKEN = "#"
bot = Bot(token=TOKEN)
dp = Dispatcher(bot)
db = Database('MotorinDB.db')
last_commands = []
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
if(not db.user_exists(message.from_user.id)):
db.add_user(message.from_user.id)
await bot.send_message(message.from_user.id,"Добро пожаловать в форму регистрации! \nПожалуйста, выберите необходимое поле", reply_markup=nav.allCategoryUser)
last_commands.append({"command":"status_request","data":message})
else:
await bot.send_message(message.from_user.id,"Здравствуйте!\nВы уже зарегестированы и можете пользоваться возможностями бота.", reply_markup=nav.mainHelp)
@dp.message_handler()
async def bot_message(message: types.Message):
if message.chat.type == 'private':
if message.text == 'ПРОФИЛЬ':
user = db.get_user(message.from_user.id)
user_status = user[2]
user_name = user[3]
user_lastname = user [4]
user_street = user [5]
user_house = user [6]
user_entrance = user [7]
user_room = user [8]
if user_status and user_name and user_lastname:
await bot.send_message(message.from_user.id, 'Ваш статус "{}"\nВаше имя "{}"\nВаша фамилия "{}"\nВаша улица "{}"\nВаш дом "{}"\nВаш подъезд "{}"\nВаша квартира "{}"'.format(user_status, user_name, user_lastname, user_street, user_house, user_entrance, user_room))
else:
await bot.send_message(message.from_user.id,"Укажите ваш никнейм")
last_commands.append({"command":"status_request","data":message})
elif last_commands[-1]["command"] == 'room_request':
last_commands.append({"command":"","data":message})
db.put_user(message.from_user.id,message.text,'room')
await bot.send_message(message.from_user.id,"Поздравляем \nВы зарегистрированы!", reply_markup=nav.mainMenu)
elif last_commands[-1]["command"] == 'entrance_requesat':
last_commands.append({"command":"room_request", "data":message})
db.put_user(message.from_user.id,message.text,'entrance')
await bot.send_message(message.from_user.id,"Укажите вашу квартиру")
elif last_commands[-1]["command"] == 'house_request':
last_commands.append({"command":"entrance_request", "data":message})
db.put_user(message.from_user.id,message.text,'house')
await bot.send_message(message.from_user.id,"Укажите ваш подъезд")
elif last_commands[-1]["command"] == 'street_request':
last_commands.append({"command":"house_request", "data":message})
db.put_user(message.from_user.id,message.text,'street')
await bot.send_message(message.from_user.id,"Укажите ваш дом\nВыберите из списка", reply_markup=nav.allHome)
elif last_commands[-1]["command"] == 'lastname_request':
# обновить никнейм пользователя с id
last_commands.append({"command":"street_request","data":message})
db.put_user(message.from_user.id,message.text,'lastname')
await bot.send_message(message.from_user.id,"Укажите вашу улицу\nВыберите из списка", reply_markup=nav.allStreet)
elif last_commands[-1]['command'] == 'name_request':
# обновить имя пользваотеля с таким то id
last_commands.append({"command":"lastname_request","data":message})
db.put_user(message.from_user.id,message.text,'name')
await bot.send_message(message.from_user.id,"Укажите вашу фамилию")
elif last_commands[-1]["command"] == 'status_request':
# обновить никнейм пользователя с id
last_commands.append({"command":"name_request","data":message})
db.put_user(message.from_user.id,message.text,'status')
await bot.send_message(message.from_user.id,"Укажите ваше имя")
if __name__== "__main__":
executor.start_polling(dp, skip_updates = True)
# Навигация
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
btnProfile = KeyboardButton('ПРОФИЛЬ')
btnHelp = KeyboardButton('Нужна помощь')
btnCategoryUser1 = KeyboardButton('Собственник')
btnCategoryUser2 = KeyboardButton('Арендатор')
btnCategoryUser3 = KeyboardButton('Сожитель')
btnInformation = KeyboardButton('Иформация о боте')
btnStreet = KeyboardButton('Береговой проезд')
btnAllHomeBeregovoi1 = KeyboardButton('5к1')
btnAllHomeBeregovoi2 = KeyboardButton('5к2')
btnAllHomeBeregovoi3 = KeyboardButton('5к3')
mainMenu = ReplyKeyboardMarkup(resize_keyboard = True)
mainMenu.add(btnProfile, btnHelp)
mainHelp = ReplyKeyboardMarkup(resize_keyboard=True)
mainHelp.add(btnHelp)
allCategoryUser = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
allCategoryUser.add(btnCategoryUser1, btnCategoryUser2, btnCategoryUser3, btnInformation)
allStreet = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
allStreet.add(btnStreet)
allHome = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
allHome.add(btnAllHomeBeregovoi1, btnAllHomeBeregovoi2, btnAllHomeBeregovoi3)
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question