import logging
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.utils import executor
from aiogram.utils.keyboard import InlineKeyboardBuilder
logging.basicConfig(level=logging.INFO)
API_TOKEN = 'YOUR_API_TOKEN'
bot = Bot(token=API_TOKEN)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)
async def menu_keyboard():
ikb = InlineKeyboardBuilder()
ikb.button(text="?Регистрация", callback_data="register")
ikb.button(text="?Инструкция", callback_data="instruction")
ikb.button(text="?Получить сигнал?", callback_data="get_signal")
ikb.adjust(2, 1)
return ikb.as_markup()
async def register_keyboard():
ikb = InlineKeyboardBuilder()
ikb.button(text="?? Зарегистрироваться", url='YOUR_REF_URL')
ikb.button(text="?Вернуться в главное меню", callback_data="back_to_menu")
ikb.adjust(1)
return ikb.as_markup()
async def on_register_keyboard():
ikb = InlineKeyboardBuilder()
ikb.button(text="?Инструкция", callback_data="instruction")
ikb.button(text="?Получить сигнал?", callback_data="get_signal")
ikb.button(text="?Вернуться в главное меню", callback_data="back_to_menu")
ikb.adjust(2, 1)
return ikb.as_markup()
async def back_keyboard():
ikb = InlineKeyboardBuilder()
ikb.button(text="?Вернуться в главное меню", callback_data="back_to_menu")
return ikb.as_markup()
async def mines_keyboard():
ikb = InlineKeyboardBuilder()
for num in [1, 3, 5, 7]:
ikb.button(text=str(num), callback_data=str(num))
return ikb.as_markup()
async def get_signal_keyboard():
ikb = InlineKeyboardBuilder()
ikb.button(text="?Получить сигнал?", callback_data="get_signal_again")
ikb.button(text="?Вернуться в главное меню", callback_data="back_to_menu")
ikb.adjust(1)
return ikb.as_markup()
@dp.callback_query(lambda c: c.data == "back_to_menu")
async def back_to_menu_handler(callback_query: types.CallbackQuery):
logging.info("Back to menu button clicked")
await callback_query.answer()
await callback_query.message.edit_text("Вы в главном меню.", reply_markup=await menu_keyboard())
@dp.message_handler(commands=['start'])
async def start_command(message: types.Message):
await message.answer("Добро пожаловать! Выберите опцию:", reply_markup=await menu_keyboard())
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
from config import CHANNEL_URL, REF_URL
class ClientKeyboard:
async def menu_keyboard():
ikb = InlineKeyboardBuilder()
ikb.button(text="?Регистрация", callback_data="register")
ikb.button(text="?Инструкция", callback_data="instruction")
ikb.button(text="?Получить сигнал?", callback_data="get_signal")
ikb.adjust(2, 1)
return ikb.as _markup()
async def register_keyboard():
ikb = InlineKeyboardBuilder()
ikb.button(text="?? Зарегестрироваться", url=REF_URL)
ikb.button(text="?Вернуться в главное меню",
callback_data="back_to_menu")
ikb.adjust(1)
return ikb.as _markup()
async def on_register_keyboard():
ikb = InlineKeyboardBuilder()
ikb.button(text="?Инструкция", callback_data="instruction")
ikb.button(text="?Получить сигнал?", callback_data="get_signal")
ikb.button(text="?Вернуться в главное меню",
callback_data="back_to_menu")
ikb.adjust(2, 1)
return ikb.as _markup()
async def back_keyboard():
ikb = InlineKeyboardBuilder()
ikb.button(text="?Вернуться в главное меню",
callback_data="back_to_menu")
return ikb.as _markup()
async def mines_keyboard():
ikb = InlineKeyboardBuilder()
ikb.button(text="1",
callback_data="one")
ikb.button(text="3",
callback_data="three")
ikb.button(text="5",
callback_data="five")
ikb.button(text="7",
callback_data="sever")
return ikb.as _markup()
async def get_signal_keyboard():
ikb = InlineKeyboardBuilder()
ikb.button(text="?Получить сигнал?", callback_data="get_signal_again")
ikb.button(text="?Вернуться в главное меню",
callback_data="back_to_menu")
ikb.adjust(1)
return ikb.as _markup()