Телеграм-бот на Python с упором на интеграции со Scratch, утилиты для чатов и несколько встроенных мини-игр.
/project <id|url>: показывает информацию о проекте Scratch, статистику, описание и инструкции./sound <id|url>: достаёт самый длинный звук из проекта и отправляет его в Telegram./studio <id|url>: показывает данные студии Scratch.- Для части закрытых или недоступных проектов бот пытается работать через ремикс-механику и служебные токены.
/messages <username>: показывает число непрочитанных сообщений Scratch-пользователя./member <username>: проверяет признаки Scratch Membership./agent <username>: получает user-agent по нику./user <username>: показывает расширенный профиль Scratch, включая дату регистрации, статус, bio, ссылки и часть дополнительной информации./randomuser: присылает случайный Scratch-профиль./getjson <id|url>: вытаскивает JSON проекта./login <username> <password>: служебная команда для авторизации в Scratch и получения cookie/token. Доступна толькоverytrusted.
/start,/help,/info,/guidelines: базовые информационные команды./proxy <url>: отправляет документ по ссылке./tts <text>или ответом на сообщение: озвучивает текст через Scratch TTS./linkbtn <url> <text>: создаёт inline-кнопку со ссылкой./copybtn <caption> <text_to_copy> <button_text>: создаёт кнопку копирования текста./ayu <text>ответом на сообщение: оформляет цитату и добавляет подпись/комментарий./time: показывает локальное время для заранее заданных людей/часовых сдвигов./case <number>: переводит integer case code в IPv4./ip <ipv4>: переводит IPv4 в case code.- Бот умеет реагировать на некоторые фразы, токены, YouTube-ссылки и пересылать сообщения между конкретными чатами/темами.
/rpsответом на сообщение: камень-ножницы-бумага через inline-кнопки./tttответом на сообщение: крестики-нолики./cards: карточная мини-игра на память./clicker: простой счётчик нажатий./roulette: квиз-опрос "русская рулетка"./randmsg: пересылает случайное сообщение из текущего чата.
Некоторые функции доступны только спискам trusted и verytrusted, зашитым в коде:
/echo/get/eval/dm/p,/unp/opt,/clt/normalise//normalize/restart
Часть этих команд потенциально опасна: они позволяют выполнять сетевые запросы, отправлять сообщения, закреплять сообщения и выполнять ограниченный eval.
- Python
pyTelegramBotAPI(telebot)requestspytz
main.py: весь основной код бота.tokens.json: локальный конфиг с секретами. Не коммитится.tokens.example.json: шаблон конфига без секретов..gitignore: исключения для локальных и секретных файлов.
- Создайте виртуальное окружение и установите зависимости:
python -m venv .venv
.\.venv\Scripts\activate
pip install pyTelegramBotAPI requests pytz- Скопируйте шаблон:
Copy-Item tokens.example.json tokens.json- Заполните
tokens.jsonсвоими значениями.
Бот ожидает такие ключи:
telegram_bot_tokentestaccremixes_cloud_tokenremixer_tokenaccount_remixerscratch_activity_headerseval_mask_token
Подробный шаблон лежит в tokens.example.json.
.\.venv\Scripts\python.exe .\main.pyИли:
python .\main.pyБот использует long polling через bot.infinity_polling().
- В проекте нет разделения на модули: почти вся логика находится в одном файле
main.py. - В коде есть привязка к конкретным Telegram-чатам, форум-темам и ID пользователей.
- Часть Scratch-функций зависит от приватных cookie, CSRF и служебных токенов.
- Некоторые команды работают только у доверенных пользователей.
- Без корректно заполненного
tokens.jsonбот не запустится.
- Не коммитьте
tokens.json. - Не публикуйте Scratch cookie и Telegram bot token.
- Если токен уже утёк, перевыпустите его и обновите локальный
tokens.json.