Загрузка...

Spam block with spam protection

Thread in Python created by Эксфадор Mar 8, 2025. (bumped Mar 12, 2025) 184 views

  1. Эксфадор
    Эксфадор Topic starter Mar 8, 2025 ПЛАГИНЫ ДЛЯ FPC - t.me/coxerhub 1739 Aug 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
Loading...