Regela icon

PythonBotKeyboardsAIOGRAM

Regela | PRO | 10/13/22 06:02:23 PM UTC | 0 ⭐ | 1000 👁️ | Never ⏰ | []
Python |

1.98 KB

|

None

|

0 👍

/

0 👎

import logging
 
from aiogram import Bot, Dispatcher, executor, types
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton
 
from settings import API_TOKEN
 
logging.basicConfig(level=logging.DEBUG)
 
bot = Bot(token=API_TOKEN)
 
dp = Dispatcher(bot)
 
 
@dp.message_handler(commands=['start', 'help'])
async def send_welcome(message: types.Message):
 
    markup = ReplyKeyboardMarkup().add(
        KeyboardButton("ГЛАВНАЯ КНОПКА")
    )
 
    await message.reply("Hi!\nI'm EchoBot!\nPowered by aiogram.", reply_markup=markup)
    await message.answer(f"Your id is {message.from_user.id}")
 
    logging.info(f"{message.from_user.username}: {message.text}")
 
 
@dp.message_handler(regexp='(^cat[s]?$|puss)')
async def cats(message: types.Message):
    await message.reply(text='Cats are here 😺')
    logging.info(f"{message.from_user.username}: {message.text}")
 
 
@dp.message_handler()
async def echo(message: types.Message):
 
    markup = InlineKeyboardMarkup().add(
        InlineKeyboardButton("Кнопка1", callback_data="but_1"),
        InlineKeyboardButton("Кнопка2", callback_data="but_2"),
        InlineKeyboardButton("JBT", callback_data="jbt"),
    )
 
    await message.answer(message.text, reply_markup=markup)
    logging.info(f"{message.from_user.username}: {message.text}")
 
 
@dp.callback_query_handler(text_startswith="but_")
async def but_pressed(call: types.CallbackQuery):
    logging.info(f"{call.from_user.username}: {call.data}")
 
    markup = ReplyKeyboardMarkup(resize_keyboard=True)
    markup.add(
        KeyboardButton("ГЛАВНАЯ КНОПКА"),
    )
    markup.row(
        KeyboardButton("Кнопка3", request_location=True),
    )
    markup.insert("Кнопка4")
 
    await call.message.answer(text=f"You pressed {call.data}", reply_markup=markup)
    await call.answer()
 
 
if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
 

Comments