Бот для Telegram-канала "Код на салфетке" и чата "Кот на салфетке"
Репозиторий с исходным кодом бота для конкурса начинающих программистов на Python
У нас есть "Бот на салфетке" - бот для канала и чата. В связи с большим количеством спамеров, приходящих в чат и спамящих своим "очень интересным предложением", возникла необходимость в защите - введением проверки новых пользователей чата через "капчу", при правильном ответе на которую пользователь может продолжить общаться, в противном случае бот исключает его из чата.
Способов решения задачи несколько, от чего она является идеальной для конкурса.
- Реализовать "капчу" для нового участника чата.
- "Капча" должна быть в виде изображения.
- Для упрощения, достаточно реализовать задачу на сложение, результат которой будет проверять бот.
- Дать пользователю три попытки на решение задачи.
- Если пользователь три раза вводит неверный ответ - исключение из чата.
- Все сообщения пользователя без верного ответа - удалять.
- (Опционально) Добавить таймер в течении которого пользователь должен ответить верно (включая неверные ответы), если не было верного ответа или не было сообщений вовсе - исключение.
Тут пропишите что вы сделали, какой подход использовали и так далее.
- Необходимо сделать fork (именно fork, а не clone!) проекта.
- Написать функционал антиспама в отдельной ветке.
- Убедиться, что всё работает.
- Сделать push в свой репозиторий и из него pull request в наш.
- Ждать начала голосования и участвовать в обсуждении своего и решений других участников.
- aiogram 3
- pydantic-settings
- requests
- Создать и активировать виртуальное окружение:
python -m venv .venv # для Windows venv\Scripts\activate.ps1 # или venv\Scripts\activate.bat # для *NIX-систем source venv/bin/activate
- Установить зависимости:
pip install -r requirements.txt
- Переименовать
.env.example
в.env
и вписать соответствующие данные:TOKEN=ваш_токен_бота ADMIN_ID=id_администратора GROUP_ID=id_группы WEATHER_KEY=токен_погоды # не обязателен для конкурса AUDIO_KEY_ID=id_распознавания_голоса # не обязателен для конкурса AUDIO_KEY_SECRET=токен_распознавания_голоса # не обязателен для конкурса
- Запустить бота:
python main.py
Иван Ашихмин
Telegram-канал "Код на салфетке"