Files
qwork/bot.py
2026-03-28 20:59:54 +03:00

72 lines
2.5 KiB
Python

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 = (
"<b>👋 Привет! Я твой персональный агент по Kwork.</b>\n\n"
"🔍 Я мониторю биржу 24/7 и мгновенно присылаю тебе свежие заказы.\n\n"
"⚠️ Нажимая кнопку «Подписаться», вы принимаете условия "
"<a href='https://telegra.ph/Polzovatelskoe-soglashenie-i-Oferta-qwork-parse-bot-03-28'>публичной оферты</a>."
)
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(
"✅ <b>Вы успешно подписались на уведомления!</b>",
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())