惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
MyScale Blog
MyScale Blog
M
MIT News - Artificial intelligence
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
U
Unit 42
Blog — PlanetScale
Blog — PlanetScale
L
LangChain Blog
C
Check Point Blog
WordPress大学
WordPress大学
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
T
Tailwind CSS Blog
Vercel News
Vercel News
腾讯CDC
GbyAI
GbyAI
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题
H
Help Net Security
博客园 - 三生石上(FineUI控件)
D
DataBreaches.Net
Microsoft Security Blog
Microsoft Security Blog
小众软件
小众软件

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Написание телеграм бота для проверки паролей по кибербезо...
Даянч Курбанмурадов · 2026-05-30 · via Все публикации подряд на Хабре

В этой статье я разберу своего телеграм бота который проверяет пароль по утекшим базам данных с помощью API have i been pwned. Начнем с того что я сделал кнопки, то есть пользователю не придется вводить унылые команды по типу /help или /scan

Часть кода написании кнопок:

def get_main_keyboard():
    return ReplyKeyboardMarkup(
        keyboard=[
            [KeyboardButton(text="Сгенерировать пароль")],
            [KeyboardButton(text="Как проверить свой пароль?")],
            [KeyboardButton(text="Почему бот иногда не работает?")],
        ],
        resize_keyboard=True
    )

А здесь просто вызывается функция кнопок

@dp.message(CommandStart())
async def cmd_start(message: Message):
    save_user(message.from_user.id, message.from_user.username, message.from_user.first_name)
    logger.info(f"Юзер {message.from_user.id} (@{message.from_user.username}) нажал /start")
    
    await message.answer(
        "Привет! Я бот для проверки кибербезопасности твоих паролей.\n\n"
        "• Нажми кнопку ниже, чтобы создать взломостойкий пароль.\n"
        "• Или просто **отправьте мне любой текст**, и я проверю, есть ли он в базах утечек хакеров.",
        reply_markup=get_main_keyboard()
    )

Наш любимый пользователь всегда сталкивается с какими то ошибками. Неважно затупил он, или наш бот, важно то что это отправляется логом, и мы просто можем ответить на его же ошибку внутри бота

Кусок кода ответа админстратора

@dp.message(Command("send"))
async def cmd_send_to_user(message: Message):
    if message.from_user.id != ADMIN_ID:
        return
        
    try:
        args = message.text.split(maxsplit=2)
        if len(args) < 3:
            await message.answer("❌ Формат: /send ID ТЕКСТ")
            return
            
        target_id = int(args[1])
        text_to_send = args[2]
        
        await bot.send_message(chat_id=target_id, text=f"✉️ **Сообщение от разработчика:**\n\n{text_to_send}")
        await message.answer(f"✅ Отправлено пользователю {target_id}")
        logger.info(f"Админ отправил сообщение для {target_id}: {text_to_send}")
    except ValueError:
        await message.answer("❌ ID должен быть числом.")
    except Exception as e:
        await message.answer(f"❌ Ошибка отправки: {e}")
        logger.error(f"Не удалось отправить сообщение от админа к {target_id}: {e}")

Так же я добавил телеметрию. Все что делает пользователь в боте отправляется в терминальный лог. Не знаю, просто рекомендую убрать если это кажется не конфиденциальным. Ну а кому важно как работает бот можете оставить. Все в свободном доступе.

Полный исходный код с зависимости на моем github.

Ссылка на github: https://github.com/dkrunkeevich/password-security-bot

p.p.s Файл нужно открывать только с помощью cmd а не двойным кликом иначе скрипт не сработает(Не могу понять причину почему, может вы напишите а?)