Запуск Телеграм-бота на смартфоне с помощью Dory-node.js.
Инженерия себяПростой, но не очень надежный способ. Вполне подойдет для обучения и тестирования.
- Что понадобится
- Устанавливаем Dory-node.js
- Создайте папку
- Создание и редактирование файлов
- Получить токен у Botfather
- Запустите Dory-node.js
- Устанавливаем модули (API)
- Если есть файл package.json
- Если нет файла package.json
- Запуск бота
- Настройки вашего процесса
- Настройки самой Dory node.js
- Примеры кода ботов
Что понадобится
- Установленное на смартфон приложение Dory-node.js
- Код вашего бота (например, файл index.js или папка с файлами).
Готовый код можно взять из примеров в этой статье: https://telegra.ph/Primery-koda-botov-01-11.
Еще проще пример в статье Первый телеграм-бот на Node.js - Файл package.json, находящийся в той же папке, с прописанными в нем зависимостями (dependencies)
(PS. Этот пункт не обязателен. Данный файл можно будет создать в процессе с помощью команды npm init, затем npm install --save grammy. Но для этого понадобится немного поработать в терминале)
Файл package.json можно создать вручную с таким содержанием (это в случае, если используется библиотека grammy, как в моих примерах):
{
"name": "myapp",
"version": "1.0.0",
"dependencies": {
"grammy": "^1.13.0"
}
}
Устанавливаем Dory-node.js

С этим все понятно. Просто переходите по ссылке и устанавливайте приложение из Play Market.
Создайте папку
С помощью любого файлового менеджера создайте папку, например, с именем dory. Пусть папка будет в "корневом" каталоге (как можно выше, а не в других каталогах) - там будет удобнее.
Создание и редактирование файлов
Если у вас уже есть файл с кодом бота и файл package.json - переместите их в созданную папку.
Если нет - нужно создать эти файлы
Или скачать готовые примеры из статьи.
Лучший редактор кода для Android, который я нашел - Acode - code editor. В нем можно открывать локальные файлы и не так много рекламы, как в некоторых других (хотя и в нем были некоторые баги).
Он вам пригодится, чтобы создать файлы и редактировать код в будущем.
Установите приложение: Acode - code editor

Запустите его, нажмите на кнопку меню в правом верхнем углу, далее -> Файлы. Найдите созданную ранее папку dory, откройте ее, нажав галочку справа снизу.

Снова нажмите на меню -> Новый файл.
Создаем недостающие файлы и заполняем их содержимым. Например, файл package.json

Код файла package.json:
{
"name": "myapp",
"version": "1.0.0",
"dependencies": {
"grammy": "^1.13.0"
}
}
Чтобы вставить текст из буфера (код бота или содержимое файла package.json, которое вы скопировали выше), зажмите палец на пустом месте и выберите иконку вставки. Или нажмите на карандашик справа и выберите "Вставить".

Нажмите на иконку дискетки, чтобы сохранить файл

Вам предложат выбрать папку для сохранения - выберите вашу папку (например dory, если вы создавали папку с этим именем).
Если у вас нету файла с программой - аналогично создайте файл index.js (у вас может быть другое название файла ***.js).
Файлы созданы. Переходим к запуску.
Получить токен у Botfather
Если вы взяли код из примеров - не забудьте заменить текст СЮДА_ТОКЕН на токен вашего собственного бота. Как его получить?
Читайте здесь: Получить токен бота у Botfather
Запустите Dory-node.js
Нажимаем на плюсик снизу справа.
Теперь нам нужно будет открыть:
(В процессе вам предложат разрешить доступ программе к файловой системе - соглашайтесь)

- Add file - ищем и выбираем файл вашей программы (в моем случае это clicker.js)
- (если у вас нет файла package.json - этот пункт пропустить)
Add Directory - ищем и выбираем папку, в которой содержится и файл программы, и файл package.json
(см. следующий скриншот, чтобы увидеть, что должно появиться).
Устанавливаем модули (API)
Попробуйте запустить бота. Нажмите START в области, где у меня открыт clicker.js

Бот не запустится. Чтобы посмотреть информацию об ошибках - откройте STD OUT

STD OUT показывает информацию о ходе выполнения программы. Эта функция пригодится и в будущем, чтобы обнаруживать ошибки и следить за программой Тут будут выводиться ошибки, или то, что вы выведите в коде бота с помощью:
console.log('пример текста, который отобразится в STD OUT')
Мы видим ошибку Cannot find module 'grammy'. Наша программа хочет использовать эту библиотеку (API) - но она не установлена на нашем смартфоне.
Значит ее нужно установить.
Если есть файл package.json
Мы можем установить разом все библиотеки, которые прописаны в зависимостях в нашем файле package.json. А как помним, у нас там как раз прописана зависимость от grammy:
"dependencies": {
"grammy": "^1.13.0"
}
Там где открыта наша папка - нажимаем OPEN

Откроется файл package.json
Нажимаем меню (справа сверху) и выбираем npm install.
Это стандартная команда, означающая "установить все модули, прописанные в dependencies файла package.json"

Смотрим на результат. Через 5-10 секунд должна появиться информация об успешно установленных модулях:

Закрываем файл жестом "назад". Теперь можно запускать бот!
Если нет файла package.json
Мы будем работать в терминале (shell) и в нем нам нужно будет попасть папку с нашим ботом. Сейчас нам нужно скопировать этот путь. Чтобы не писать его вручную) - нажмите SETTINGS

Отлично, теперь его можно выделить и скопировать. Копируйте все. А то лишнее, что после ...dory/ потом уберем. Или уберите сейчас.

Возвращаемся кнопкой или жестом "назад"
Теперь нужно запустить терминал. Для этого заходим в меню (кнопка в правом верхнем углу) и выбираем Shell

Терминал имеет такой вид:

Мы находимся (путь, подчеркнутый синим) - совсем не там, где нужно. Можно просто изменить путь командой cd на тот, что у нас в буфере
cd /storage/emulated/0/dory
Но мы сделаем по-другому, чтобы и в будущем было удобнее. Нажмите меню (справа сверху). Выбираем Настройки

Прокручиваем в самый низ до Домашняя папка

И просто задаем домашней папкой наш нужный путь (который мы копировали в буфер), только лишнее удалить, то что после ...dory/

Готово!
(в настройках shell еще можно найти изменение размера шрифта. Так, я изменил с 10 на 14)
Перезапускаем Shell терминал (выход из него кнопкой Х сверху справа). При следующем заходе попадаем сразу туда, куда нужно (путь подчеркнут синим). Пишем в терминале npm init

Нажимаем ↵ enter
Эта команда инициирует проект, а именно - создает файл package.json. На все вопросы просто нажимаем ↵ enter, эти детали сейчас не важны.

Готово! Файл package.json создан.
Теперь нужно установить модуль API, который используется в нашем боте. Выполняем команду
npm install --save grammy

После выполнения этой команды библиотеки скачиваются в специальную папку node_modules, а в вашем файле package.json добавляется зависимость. Т.о, если вы переносите проект - у вас уже будет файл package.json, и с его помощью можно быстро установить все зависимости - командой npm install.
Выходим из терминала (кнопка Х сверху)
Запуск бота
Снова нажмите START (в меню файла с программой, а не папки)

Бот должен запуститься. Кнопка START станет серой, загорится кнопка STOP (теперь надолго, а не на мгновение)

Нажмите STD OUT

Все работает! Перейди в телеграме к своему боту и попробуй повзаимодействовать с ним.
Обрати внимание, что "💡🏔Бот Бесконечный путь запущен /start" пишется в консоли только потому, что у меня в коде есть строка
console.log('💡🏔Бот Бесконечный путь запущен /start');
Которая выполняется после старта бота. Если у тебя таких строк нет - то в консоли этого не будет.
console.log('нужный текст') можно использовать, чтобы выводить какую-то нужную тебе информацию - и таким образом следить за ходом работы бота. Но в качестве "отладчика", поиска ошибок - это неэффективно. Гораздо эффективнее использовать debug режим в VS Code на компьютере, когда в любом месте кода можно задать "точку остановки" и в режиме реального времени просматривать содержимое всех переменных программы.
Настройки вашего процесса
Теперь нажмите на SETTINGS

Измените настройки так, как на моем скриншоте:

Start on boot|update - означает - запускать вашу программу при загрузке приложения Dory
auto restart - автоматически перезагружать при вылете из-за ошибки.
Нажмите дискетку, чтобы сохранить настройки.
С этим все было не так просто. Из-за бага у меня часто Dory входила в цикл и непрерывно перезагружалась. Чтобы остановить это - нужно было снова зайти в настройки процесса (SETTINGS) и отменить функцию auto restart (и снова сохранить). Именно поэтому я начал искать другой способ и разбираться с Termux (ну и лимита в 999 перезагрузок может кому-то не хватить).
Настройки самой Dory node.js
В главном меню программы - нажмите левую верхнюю кнопку. Она покажет настройки самой программы Dory. Можете установить следующие:

Start on boot - запускать Dory при запуске смартфона (не уверен, что это работает хорошо, нужно тестировать).
WAKE LOCK - запретить переходить смартфону в "глубокий сон", чтобы сервер вашего бота не остановился в этом случае.
Примеры кода ботов
Примеры ботов можно скачать в этой статье: https://telegra.ph/Primery-koda-botov-01-11.
Можно запустить и поисследовать код этих ботов. Там ты найдешь:
- Простейший анонимный групповой чат
- Игра-кликер с анонимным чатом между участниками
- Улучшенная версия группового анонимного чата
- Анонимная чат-рулетка
Так же есть пока неоконченная статья: Запуск Телеграм-бота на смартфоне в Termux (более надежный, но и более сложный способ)
Назад к инструкции для Windows