Файл настроек был создан так как отсутствовал перезапустите приложение rakbot

Обновлено: 07.07.2024

В предыдущей статье мы рассказали, как создать простого бота на Node.js, однако он работал только на локальном компьютере. Эта статья о том, как загрузить бота на сервер, запустить его и проверить, что всё работает.

Шаг 1. Выбрать хостинг

Как правило, на shared-хостинге отсутствует поддержка Node.js, поэтому нам понадобится как минимум виртуальный сервер. Существуют сервисы, предлагающие VPS бесплатно, но с заметными ограничениями: например на количество трафика или нагрузку на сервер. Можно выделить несколько известных зарубежных провайдеров (но стоит отметить, что для новичков они могут оказаться сложными):

  • Google Cloud
  • Oracle Cloud
  • Amazon Web Services

Преимущество платных VPS в более высоких лимитах или их отсутствии, а также в гарантии стабильной работы сервера. Вместе с этим вы получаете активную поддержку и всегда можете рассчитывать на помощь хостинг-провайдера, если возникнут проблемы.

  1. Прогнозируемая нагрузка — зависит от сложности вашего бота и количества запросов к нему.
  2. Количество оперативной памяти — это зависит от многих факторов, как, например, уровень оптимизации кода и общий масштаб вашего проекта.

Так как наш бот использует только одну основную библиотеку и состоит из нескольких строк кода, мы выбираем самый младший тариф — Cloud-0. В будущем, если возникнет необходимость, можно перейти на более дорогой тариф.

Шаг 2. Заказать хостинг

Заказ VPS сервера

После заказа и оплаты дождёмся настройки сервера:

Настройка сервера

В течение минуты статус сервера сменится с «В процессе» на «Активен». После этого отобразятся реквизиты доступа к серверу, они также будут отправлены на почту:

Реквизиты доступа к серверу

Шаг 3. Загрузить бота

Приступим к загрузке бота на сервер. Это можно сделать разными способами — с помощью FTP, SFTP, панели управления или, к примеру, rsync. Мы выберем самый быстрый вариант — SFTP, так как для него нужна только возможность подключения к серверу по SSH, которая обычно присутствует на всех VPS сразу после заказа.

Мы подключимся к серверу с помощью FileZilla. Укажем IP-адрес сервера, а также логин root и пароль в настройках клиента:

Настройки клиента

При первом подключении появится окно с предупреждением:

Окно с предупреждением

Ставим галочку «Всегда доверять этому хосту» и нажимаем «Ок».

Переходим на директорию выше ( . ), затем в каталог /opt и создаём папку с произвольным названием (мы выбрали keksbot ):

Директория проекта

Переходим в созданную папку и загружаем файлы index.js и package.json :

Папки с проектом на компьютере и на хостинге

Шаг 4. Зайти на сервер по SSH

Теперь нужно подключиться к серверу по SSH, чтобы установить Node.js и запустить бота. Для этого необходим SSH-клиент, например Putty, XShell, Bitvise SSH или любой другой. Функциональность программ может немного отличаться, но большой разницы в использовании между ними нет. Мы выбрали PuTTY как самый популярный и бесплатный SSH-клиент для Windows.

Открываем PuTTY, указываем IP-адрес сервера, порт 22 уже указан по умолчанию:

Базовые настройки PuTTY

Нажимаем «Соединиться». Откроется окно с запросом логина:

Окно с запросом логина

Вводим root , после чего появится запрос пароля, при вводе которого символы не отображаются. Не стоит переживать, это особенность работы Linux — пароль нужно вводить вслепую. Чтобы не делать этого вручную, можно скопировать пароль и нажать правой кнопкой мыши в окне PuTTY. Убедитесь, что вы скопировали пароль без пробелов!

Шаг 5. Установить Node.js

Теперь займёмся установкой. Обратите внимание, что команды для установки Node.js отличаются в зависимости от операционной системы. В наших примерах указаны команды для Ubuntu, Debian и CentOS — мы будем вводить их в консоли SSH-клиента.

Если вы не знаете, какая ОС установлена на сервере, можете проверить это командой:

Вывод будет примерно таким:

Нас интересует поле NAME , в котором указано название дистрибутива.

Помимо Node.js нам понадобится утилита Screen, чтобы бот продолжал работать, когда мы отключимся от сервера. Также нужен менеджер пакетов npm для установки зависимостей.

для Ubuntu/Debian

Подождём завершения установки и проверим, что Node.js работает:

Если в ответе отобразилась версия установленного пакета, то всё прошло успешно.

Теперь перейдём в папку с файлом бота и установим зависимости:

Возможные ошибки при установке, и как их решить

При установке могут появиться ошибки вида:

Обычно это связано с тем, что у пользователя недостаточно прав для установки пакетов на сервере, либо предыдущий процесс установки завершён некорректно.

В первом случае необходимо убедиться, что вы подключились к серверу под именем суперпользователя root — при необходимости зайдите на сервер заново.

Во втором случае для решения проблемы нужно завершить процесс менеджера пакетов и удалить lock -файлы. Чтобы это сделать, запустите команды:

для Ubuntu/Debian

После этого попробуйте заново запустить установку.

Шаг 6. Запустить и проверить бота

Пришло время запустить бота. Для начала запустим утилиту Screen простой командой:

Перейдём в каталог с файлом бота:

После этого можем запустить бота:

Заходим в Telegram, проверяем бота:

Проверка работы бота

Отлично! Всё работает.

Теперь можно отключиться от сервера и закрыть окно PuTTY, бот продолжит работу.

Шаг 7. Обеспечить автоматический перезапуск бота

Из-за ошибок в коде бот может «упасть» в самый неожиданный момент. Чтобы этого не случилось, настроим автозапуск бота при старте сервера и его автоматический перезапуск при ошибках.

Большинство современных Linux-систем используют systemd для управления службами, поэтому следующая инструкция подойдёт для последних версий Ubuntu, Debian и CentOS.

Для начала отключим бота командой:

Нам понадобится создать собственную службу, для этого в каталоге /lib/systemd/system создадим файл:

В нашем случае это будет файл /lib/systemd/system/keksbot.service . В файл поместим следующий код:

Текст в некоторых строках необходимо отредактировать относительно вашего проекта. Разберём строки, на которые нужно обратить внимание.

В поле Description указывается описание службы. Вы можете указать в ней краткую информацию о боте.

Команда для запуска бота.

Её следует поменять, если имя скрипта вашего бота отличается от index.js . В таком случае нужно будет указать следующие значения:

Папка со скриптом, который мы запускаем. В нашем случае это /opt/keksbot/ .

Сохраняем файл. В примерах далее мы будем использовать имя службы keksbot — если вы указали другое имя, не забудьте поменять его. Для установки службы воспользуемся командами:

Теперь запустим бота командой:

Готово. Теперь бот будет автоматически запускаться при старте сервера или при возникновении ошибок. Можно проверить это, завершив процесс node:

Свободное обсуждение RakBot, серверов, способов прокачки и т.д.

Влад Удовенко

RakBot не работает на DiamondRP? Даже в RakLaunch инфа о серверах даймонда не грузится.

Евгений Попов

Влад Мытник

Виктор Абраменков

Дмитрий Яковенко

Владислав Куртоглу

Дайте нормальную документацию по луа функциям. Например: setKeys(keys, leftRightKey, upDownKey), вот какой тип данных у keys? список? целое число? целое число виртуальной клавиши? хер пойми как со всем этим работать. leftRightKey - это True или False или 0-1, и что это значит? ну не понятно какой даже тип данных в аргумент сувать, возвращает ли эта функция что-то или нет. Кошмар. Да я просто хотел сделать эмуляцию клавиши приседания и ахринел от кучи проблем)) дайте помащ дайте помащ

Алексей Алексеев

При заходе на сервер есть еще один диалог перед вводом пароля, он не отображается в чате бота и его кикает, он не может зайти, что можно сделать?

Так же прошу прощения у администрации, если тема создана не в том разделе. Судя по правилам раздела - этот урок не подходит никуда, но здесь были FAQ по RakBot, так что, я думаю, что она тут будет уместна.

С некоторых времен в RakBot появилась возможность писать собственные скрипты, тем самым расширяя его функционал. Для написания собственных сценариев используется урезанный язык Lua. Используется язык Lua во многих проектах, тому яркий пример Multi Theft Auto, где он используется серверным языком для разработки ресурсов/гейммодов. Разрабатывать на нём одно удовольствие, а так же неимоверно просто. Хотелось бы немного рассказать о языке и показать несколько наглядных примеров, с помощью которых Вы сможете написать собственные сценарии ботов. Подробную информацию о языке Вы можете найти на официальном сайте Lua.org, а если хотите углубиться - советую прочитать книгу Роберту Иерузалимски "Programming in Lua".


С первого взгляда может показаться, что событий для работы довольно мало, но поверьте - этого более, чем достаточно. Далее посмотрим на раздел "Функции" по той же ссылке.


Сразу бы хотелось отметить для тех, кто хоть немного знаком с языками программирования. В Lua присутствует параллельное присваивание значений, это значит, что мы можем указать через запятую несколько наименований переменных и после в этой же строке задать им значения, а так же можно возвращать из функции несколько значений, что здесь и используется. Пример использования:

Теперь, при поднятии бота, он автоматически начинает работу фермером. Разберём более подробно:

function - ключевое слово для объявления функции
onScriptStart - наименование функции. Ссылаясь на документацию - автоматически отрабатывает при инициализации сценария.
runCommand - выполнить команду/написать что-либо в чат. Использовал команду RakBot для старта работы фермера.
end - конец фукнкции.

Я на этом не остановился, так как понял его возможности и пошёл дальше. Мне нужно было хранить информацию о боте у себя на сервере и оттуда ими управлять. Для этого я написал веб-сервер, который принимал на себя запросы и в ответ отдавал ответ "Да", при успешном выполнении или же "Нет", при ошибке на стороне сервера или же не верном формате данных переданных с клиента. В этом мне помогла функция " openUrl(url) ". Теперь я знаю, на каком сервере какие админы онлайн, как работают мои боты, их статистика, так же управлял ими из ПУ. Я просто говорил им на какую работу нужно устраиваться, снимать деньги с банкомата и переводить это на другого игрока и так далее. Не правда ли хорошие возможности? Все это доступно, но многие даже не знаю о таких возможностях.

Давайте напишем сценарий, который при авторизации пользователя сигнализирует об этом на сервер и при заходе администратора в сеть, так же отправляет запрос.

Разберём более подробно, учитывая предыдущий разбор:
if else - стандартный оператор ветвления
string.match - проверяет, находится ли в строке подстрока. Я проверяю, если в чат-логе отобразилось "Геймтекст: Welcome", значит бот авторизовался и может приступать к работе. Можно использовать вместо string.match -> string.find .
openUrl - фукнция, для отправки Get запроса на конкретный URL. По url у меня находится мой API, через который мне поступают данные с ботов и куда я даю команды с клиента.

"http://mysite/Bot/Auth/".. getNickName() - оператор ".." - сложение строк. Еслибот авторизован с ником "СМ", то URL примет следующий вид: "http//mysite/Bot/Auth/CM"

Теперь, благодаря этому небольшому скрипту, я знаю, какой бот авторизован и работает, а какой не в сети и ожидает выхода администратора из игры. Неплохо, не правда ли?

В этом уроке я затронул небольшие основы языка, а так же показал, как можно работать с фукнциональными возможностями RakBot собственными руками. Если же будет интересно - смогу написать больше уроков, благодаря которым Вы сможете писать собственных ботов на основе RakBot.

Устранение проблем с Ассистентом Boot Camp на Mac

Устранение проблем с Ассистентом Boot Camp на Mac

При использовании этих предложений убедитесь, что у вас достаточно прав для учетной записи пользователя для любых необходимых изменений.

  1. Ассистент Boot Camp может перестать отвечать или установка не удалась.
  2. Загрузочный диск нельзя разбить на разделы или восстановить в один раздел.
  3. Установщик Boot Camp не открывается после использования Ассистента Boot Camp.
  4. Ассистент Boot Camp сообщает, что USB-накопитель не может быть создан или на нем недостаточно места.

Убедитесь, что установочные файлы macOS и Windows имеют последнюю версию.

1]Ассистент Boot Camp может перестать отвечать, или установка не удалась.

Иногда Boot Camp не работает и останавливается при создании копии установочных файлов Windows 10. В этом случае вы можете многое сделать, но нажмите Option-Command-Escape (Esc), чтобы приложение закрылось. И снова перезапустите процесс. Перезагрузка избавит вас от любых дополнительных приложений, которые вы могли запускать в фоновом режиме.

2]Загрузочный диск нельзя разбить на разделы или восстановить в один раздел.

Учебный курс по разделу диска

  • Нажмите клавишу Command и пробел, чтобы активировать прожектор поиска.
  • Введите Дисковую утилиту и откройте ее.
  • Затем в утилите для работы с дисками выберите загрузочный диск Mac (Macintosh HD)
  • Если Дисковая утилита спросит, хотите ли вы добавить том в контейнер или разбить устройство на разделы, нажмите «Разделить».
  • Выберите OSXRESERVED на появившейся диаграмме, затем нажмите кнопку удаления.
  • Точно так же выберите BOOTCAMP на графике, затем нажмите кнопку удаления.
  • Нажмите «Применить», затем нажмите «Разделить» для подтверждения.
  • Откройте Ассистент Boot Camp и попробуйте снова установить Windows.

3]Установщик Boot Camp не открывается после использования Ассистента Boot Camp.

После установки Boot Camp Macbook должен запуститься в Windows и отобразить установщик Boot Camp. Если вы его не видите, установка программного обеспечения поддержки Windows и драйверов не удалась. Хотя рекомендуется повторить процесс установки, вы также можете сделать это с помощью раздела OSXRESERVED, если он вам виден.

Установщик Windows osxreserved partition bootcamp setup

Boot Camp Загрузить программное обеспечение поддержки Windows

Если вы не видите этот раздел, вы можете использовать программу Boot Camp в macOS для загрузки драйвера. Откройте искатель и введите Ассистент Boot Camp. Когда он откроется, нажмите «Действие»> «Загрузить программное обеспечение поддержки Windows» и сохраните его в отформатированном драйвере USB. Загрузитесь в Windows и найдите файл Setup.exe, чтобы установить все драйверы для Mac, необходимые для Windows.

Это необходимо сделать, если вы столкнулись с такими проблемами, как неработающие аксессуары, звук из динамиков не слышен, не удается отрегулировать яркость, проблемы с Bluetooth и Wi-Fi, обновление программного обеспечения Apple, отсутствие драйвера или когда ваш Mac запускается до черный или синий экран после установки Windows. Если вы используете версию Macbook от AMD, вам необходимо посетить веб-сайт AMD и загрузить драйверы.

4]USB-накопитель не может быть создан или на нем недостаточно места

При использовании Bootcamp у вас должен быть загрузочный USB-носитель с Windows 10. Хотя для установочных файлов Windows не нужно много места, Bootcamp требуется емкость 16 ГБ или более на USB-накопителе. Вам также необходимо убедиться, что у вас установлена ​​последняя версия macOS и Windows, чтобы использовать Boot Camp Assistant для ее установки.

Как я могу запустить свою программу автоматически, если она аварийно завершает работу на Windows 2003 server? Иногда моя программа просто падает, есть ли способ в windows или настройках, которые я могу установить?

обычный подход состоит в том, чтобы запустить то, что известно как опекуном

Примечание: работает самопересечения bat файлы могут быть полезны, но если вы не знаете, что вы делаете, они могут творить всякие бесчинства. Это происходит, особенно если вы запускаете их при запуске. Вас предупредили.

в любом случае. Я только что вспомнил кое-что из моих 286 дней, когда я много играл с файлами BAT. Если вы пишете файл

окончательный файл BAT ("перезапустить.bat " в этом примере) будет выглядеть что-то например:

вот и все. Запустите программу (при запуске через task или даже просто startup folder) с помощью line 2, и это должно решить вашу проблему:)

О, если вы хотите остановить цикл, просто переименуйте файл bat или поставить "// " перед двумя линиями, сохраните его и выйдите из программы.

затем вы запускаете bat как администратор или запускаете вторую строку (без части psexec) из планировщика задач с повышенными привилегиями. Остерегайтесь: запуск его как обычного пользователя и нажатие "нет" в приглашении UAC дали мне BSOD, вероятно, потому, что он зациклился "не может запустить программу из-за отсутствия привилегии " пару миллиардов раз или что-то в этом роде :)

к сожалению, в Windows нет настроек для автоматического перезапуска обычной программы при ее сбое.

вам нужно активно взаимодействовать с GUI вашего приложения? Некоторые из Фантики Услуги (предназначен для запуска любого приложения в качестве службы Windows) будет контролировать ваше приложение и перезапустить его, когда он терпит неудачу, но обязательно исследовать Сеанс 0 Изоляция чтобы убедиться, что он не будет мешать.

вы можете использовать некоторые специальные приложения, такие как BDV SystemEvents или любой другой. Он позволяет указать приложение, которое будет запущено, если какое-либо другое приложение будет закрыто. Укажите то же приложение в качестве условия и действия, и вы получите ожидаемые результаты.

после некоторого гугления я наткнулся на этот хороший список. Блоггер собрал около 8 инструментов для автоматического перезапуска разбившегося или закрытого приложения.

" Если вы регистрируетесь для перезапуска и приложение сталкивается с необработанное исключение или не реагирует, пользователю предлагается возможность перезапуска приложения; приложение не автоматический перезапуск без согласия пользователя. "

для автоматического перезапуска без вмешательства пользователя, есть также RestartOnCrash. Работает со всеми окнами версии.

Читайте также: