4365a50cda
с афроо лошадьми
141 lines
3.8 KiB
Markdown
141 lines
3.8 KiB
Markdown
# 🦊 FoxLang Telegram Bot
|
||
|
||
Telegram бот, написанный на чистом FoxLang для выполнения FoxLang кода!
|
||
|
||
## 📁 Структура
|
||
|
||
```
|
||
telegram_bot/
|
||
├── main.fox # Основной файл бота
|
||
├── bot_api.fox # API для работы с Telegram
|
||
├── code_executor.fox # Выполнение пользовательского кода
|
||
├── token.txt # Токен бота (настройте!)
|
||
├── run_bot.sh # Скрипт запуска
|
||
└── README.md # Эта документация
|
||
```
|
||
|
||
## 🚀 Быстрый старт
|
||
|
||
### 1. Создание бота
|
||
|
||
1. Найдите @BotFather в Telegram
|
||
2. Отправьте `/newbot`
|
||
3. Следуйте инструкциям
|
||
4. Получите токен вида: `123456789:ABCdefGHIjklMNOpqrsTUVwxyz`
|
||
|
||
### 2. Настройка
|
||
|
||
Отредактируйте файл `token.txt`:
|
||
```bash
|
||
nano token.txt
|
||
```
|
||
|
||
Замените `YOUR_BOT_TOKEN_HERE` на ваш реальный токен.
|
||
|
||
### 3. Запуск
|
||
|
||
```bash
|
||
./run_bot.sh
|
||
```
|
||
|
||
Или вручную:
|
||
```bash
|
||
../src/foxlang main.fox
|
||
```
|
||
|
||
## 🤖 Возможности бота
|
||
|
||
### Команды
|
||
- `/start` - Приветствие и инструкции
|
||
- `/help` - Справка по FoxLang
|
||
- `/example` - Пример кода
|
||
|
||
### Выполнение кода
|
||
Отправьте боту любой FoxLang код:
|
||
|
||
```cpp
|
||
int x = 10;
|
||
int y = 20;
|
||
print("Sum: " + (x + y));
|
||
fox();
|
||
```
|
||
|
||
### Безопасность
|
||
- Запрет на `include` в пользовательском коде
|
||
- Ограничение длины кода (10000 символов)
|
||
- Ограничение вывода (4000 символов)
|
||
- Запрет системных вызовов
|
||
|
||
## 🔧 Архитектура
|
||
|
||
### main.fox
|
||
- Основной цикл бота
|
||
- Обработка команд
|
||
- Инициализация
|
||
|
||
### bot_api.fox
|
||
- HTTP запросы к Telegram API
|
||
- Парсинг JSON ответов
|
||
- Отправка сообщений
|
||
|
||
### code_executor.fox
|
||
- Выполнение пользовательского кода
|
||
- Проверки безопасности
|
||
- Ограничения вывода
|
||
|
||
## 🛠 Разработка
|
||
|
||
### Добавление новых команд
|
||
|
||
В `main.fox`, функция `handle_command()`:
|
||
|
||
```cpp
|
||
if (command == "/mycommand") {
|
||
return "My custom response";
|
||
}
|
||
```
|
||
|
||
### Расширение API
|
||
|
||
В `bot_api.fox` можно добавить новые методы Telegram API:
|
||
|
||
```cpp
|
||
void send_photo(string token, string chat_id, string photo_url) {
|
||
// Реализация отправки фото
|
||
}
|
||
```
|
||
|
||
### Улучшение безопасности
|
||
|
||
В `code_executor.fox`, функция `is_safe_code()`:
|
||
|
||
```cpp
|
||
// Добавить новые запрещенные слова
|
||
set(forbidden_words, 5, "dangerous_function");
|
||
```
|
||
|
||
## 📝 Примечания
|
||
|
||
- Бот написан на чистом FoxLang
|
||
- Использует заглушки для системных функций
|
||
- Для полной функциональности нужны встроенные функции:
|
||
- `http_get()` - HTTP запросы
|
||
- `read_file()` / `write_file()` - работа с файлами
|
||
- `sleep()` - задержки
|
||
- Строковые функции (`contains`, `replace_all`, etc.)
|
||
|
||
## 🔮 Будущие улучшения
|
||
|
||
- [ ] Полный JSON парсер
|
||
- [ ] Файловые операции
|
||
- [ ] HTTP клиент
|
||
- [ ] Строковые функции
|
||
- [ ] Логирование
|
||
- [ ] Конфигурация через файл
|
||
- [ ] Поддержка inline клавиатур
|
||
- [ ] Сохранение состояния пользователей
|
||
|
||
## 📄 Лицензия
|
||
|
||
MIT License - используйте свободно!
|