Запуск Телеграм-бота на смартфоне с помощью Dory-node.js.

Запуск Телеграм-бота на смартфоне с помощью 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






Report Page