import asyncio import logging import sys from os import getenv from aiogram import Bot, Dispatcher, html from aiogram.client.default import DefaultBotProperties from aiogram.enums import ParseMode from aiogram.filters import CommandStart from aiogram.types import Message, InlineKeyboardMarkup, InlineKeyboardButton from dotenv import load_dotenv from aiogram import F from aiogram.fsm.context import FSMContext from aiogram.utils.keyboard import InlineKeyboardBuilder, ReplyKeyboardBuilder from database import Database load_dotenv() TOKEN = getenv("BOT_TOKEN") dp = Dispatcher() db = Database("users.db") async def on_startup(): await db.create_tables() print("db 200") @dp.message(CommandStart()) async def command_start_handler(message: Message) -> None: builder = InlineKeyboardBuilder() builder.row(InlineKeyboardButton(text="✅ Подписаться", callback_data="subscribe")) builder.row(InlineKeyboardButton(text="📄 Читать оферту", url="https://telegra.ph/Polzovatelskoe-soglashenie-i-Oferta-qwork-parse-bot-03-28")) text = ( "👋 Привет! Я твой персональный агент по Kwork.\n\n" "🔍 Я мониторю биржу 24/7 и мгновенно присылаю тебе свежие заказы.\n\n" "⚠️ Нажимая кнопку «Подписаться», вы принимаете условия " "публичной оферты." ) await message.answer( text, reply_markup=builder.as_markup(), parse_mode="HTML", disable_web_page_preview=True ) @dp.callback_query(F.data == "subscribe") async def subscribe_handler(callback: CallbackQuery): user_id = callback.from_user.id print("User ID:", user_id) await db.add_user(user_id) users = await db.get_all() print("All users in DB:", users) await callback.message.edit_text( "✅ Вы успешно подписались на уведомления!", parse_mode="HTML" ) await callback.answer("Подписка активирована!") async def main() -> None: bot = Bot(token=TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML)) dp.startup.register(on_startup) await dp.start_polling(bot) if __name__ == "__main__": logging.basicConfig(level=logging.INFO, stream=sys.stdout) asyncio.run(main())