72 lines
2.5 KiB
Python
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())
|