Загрузка...

Спамблок с защитой от спама

Тема в разделе Python создана пользователем Эксфадор 8 мар 2025. (поднята 12 мар 2025) 186 просмотров

  1. Эксфадор
    Эксфадор Автор темы 8 мар 2025 ПЛАГИНЫ ДЛЯ FPC - t.me/coxerhub 1739 30 авг 2023
    Python
    import asyncio
    import logging
    import sys
    from datetime import datetime, timedelta
    from aiogram import Bot, Dispatcher, Router
    from aiogram.filters import Command
    from aiogram.types import Message
    from aiogram.client.default import DefaultBotProperties
    from aiogram.enums import ParseMode

    API_TOKEN = 'тут ваш токена'
    ADMIN_USER_ID = # тут айди адм

    bot = Bot(token=API_TOKEN)
    dp = Dispatcher()
    router = Router()

    last_request_time = {}
    lock = asyncio.Lock()

    @router.message(Command("start"))
    async def send_welcome(message: Message):
    user_id = message.from_user.id
    username = message.from_user.username
    full_name = message.from_user.full_name

    async with lock:
    now = datetime.now()
    last_time = last_request_time.get(user_id)

    if last_time and now - last_time < timedelta(minutes=50):
    remaining_time = timedelta(minutes=50) - (now - last_time)
    await message.reply(f"Пожалуйста, подождите еще {int(remaining_time.total_seconds() // 60)} минут и {int(remaining_time.total_seconds() % 60)} секунд перед следующим запросом.")
    return

    last_request_time[user_id] = now

    admin_message = (
    f"<b>Новый запрос от пользователя:</b>\n\n"
    f"ЮЗ: @{username} | ID: <code>{user_id}</code>\n"
    f"<b>Имя пользователя:</b> {full_name}"
    )

    await bot.send_message(ADMIN_USER_ID, admin_message, parse_mode='HTML')
    await message.reply(f"Привет, написал администратору, скоро он тебе напишет.\n Сделано студией: @exfa_studio")

    dp.include_router(router)

    async def main() -> None:
    bot = Bot(token=API_TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
    await dp.start_polling(bot)

    if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO, stream=sys.stdout)
    asyncio.run(main())

    Бот включает в себя:
    - отправку сообщения при вводе команды /start (уведомляет админа о новом человеке)
    - кд на 50 минут, чтобы не было флуда

     
Top
Загрузка...