Рассмотрим пошагово как установить клиент Utopia и настроить бота diano-bot для переноса контента из Telegram в Utopia канал.
Если вам нужен готовый образ виртуальной машины то можете найти его здесь (тут будет ссылка). Если захотите обновить клиент на виртуальной машине, то запустите скрипт ~/utopiahome/update_utopia.sh
Рассмотрим на примере системы с CentOS 7 и пользователем "utopiauser". Важно! Не работайте под рутом и не закидывайте бота в /root/... иначе что-то может не работать из-за прав доступа или потому что сломается относительный путь домашней папки.
Создаем папку, в которой будем работать.
cd ~
mkdir utopiahome
cd utopiahome
Установим необходимые пакеты. Тут предполагается, что вы используете чистую систему, на которой все эти зависимости еще не были установлены. Важно! Требуемая версия PHP - 7.1+, с 5.4+ бот работать не будет. При настройке mysql можете не устанавливать пароль для root, также убрать удаленный доступ.
sudo yum install -y unzip nano git composer wget epel-release yum-utils httpd
sudo systemctl enable httpd
sudo systemctl start httpd
sudo yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum-config-manager -y --enable remi-php72
sudo yum install -y php72 php72-php-fpm php72-php-mysqlnd php72-php-opcache php72-php-xml php72-php-xmlrpc php72-php-gd php72-php-mbstring php72-php-json
sudo ln -s /usr/bin/php72 /usr/bin/php
sudo yum install -y mod_php php-mbstring php-gd php-mysqli php-xml php-json mariadb mariadb-server
sudo systemctl enable mariadb.service
sudo systemctl start mariadb
/usr/bin/mysql_secure_installation
sudo systemctl restart mariadb
sudo systeemctl restart httpd
Скачиваем клиент и устанавливаем его:
sudo yum install -y libxkbcommon-x11.x86_64 libGL pulseaudio-libs-glib2 libXi libSM fontconfig libXrender mesa-libGL mesa-libGLU
wget https://update.u.is/downloads/linux/utopia-latest.x86_64.rpm
sudo rpm -ivh --replacepkgs utopia-latest.x86_64.rpm
также сделаем себе на будущее скрипт для обновления клиента:
nano update_utopia.sh
и внесите строки:
rm -rf utopia-latest.x86_64.rpm
wget https://update.u.is/downloads/linux/utopia-latest.x86_64.rpm
sudo rpm -Uvh --replacepkgs utopia-latest.x86_64.rpm
Чтобы сохранить файл в редакторе nano, нажмите Ctrl+F3. Будет предложено ввести имя файла, нажмите Enter. Чтобы закрыть рекдактор, нажмите Ctrl+F2.
Дальше нам нужен файл аккаунта. Скачайте на свою машину GUI-клиент Утопии и создайте новый аккаунт. Или возьмите свой файл аккаунта, как удобно. Назовите его account.db
и поместите на машине с ботом по пути ~/utopiahome/account.db
.
Соответственно, если имя пользователя в системе utopiauser
, то полный путь будет /home/utopiauser/utopiahome/account.db
.
Далее создаем конфиг для запуска клиента.
nano utopia.cfg
[General]
apiEnabled=true
apiHTTPEnabled=true
apiHTTPSEnabled=false
apiHelpEnabled=false
apiPort=22824
apiSslPort=10100
apiUserTokens=70E7D72AC6D91B5585E4B7D2F8A9A437
applicationLastOpenedPath=account.db
userDatabase=/home/utopiauser/utopiahome/account.db
userPassword=accountpassword
Замените apiUserTokens
, userDatabase
и userPassword
на свои.
Токен вы можете указать любой. он должен быть той же длины и быть шестнадцатеричным.
apiPort
можете изменить, можете оставить.
Создаем скрипт на запуск клиента в консольном режиме (headless mode):
nano start.sh
Заполняем содержимым:
#!/bin/bash
/opt/utopia/messenger/utopia --headless --configPath=/home/utopiauser/utopiahome/utopia.cfg
Теперь сделаем скрипт на автозапуск клиента и возобновление его работы в случае падения:
Есть также альтернативный вариант: https://gist.github.com/Sagleft/645d094a9f728ae63480347c843b9b11 (а также сразу скрипт на настройку: https://gist.github.com/Sagleft/62d71f81ecf3fe23dce624fe182669cb )
nano ~/boot_utopia.sh
Содержимое:
#!/bin/sh
ps auxw | grep utopia | grep -v grep > /dev/null
if [ $? != 0 ]
then
sh /home/utopiauser/utopiahome/start.sh > /dev/null
fi
если этот вариант у вас не заработал, то используйте такой:
#!/bin/sh
/usr/sbin/pidof utopia >/dev/null || sh /home/utopiahome/start.sh >/dev/null
Далее добавим задание в cron:
EDITOR=nano crontab -e
Добавляем строчку:
* * * * * bash /home/utopiauser/utopiahome/start.sh
Перезагружаем сервис:
systemctl restart crond
Скачиваем репозиторий бота:
cd ~/utopiahome/
git clone https://github.com/sagleft/diano-bot
cd diano-bot
устанавливаем зависимости:
sh install.sh
Если по какой-то причине установка composer-пакетов сбилась, вы можете обновить их командой composer update
.
Далее создадим пользователя БД и самиу БД. Сначала зайдем под рутом:
mysql -u root
Вводим следующее:
CREATE USER 'dianouser'@'localhost' IDENTIFIED BY '';
GRANT ALL PRIVILEGES ON * . * TO 'dianouser'@'localhost';
FLUSH PRIVILEGES;
CREATE DATABASE dianodb CHARACTER SET utf8 COLLATE utf8_general_ci;
Выходим из mysql, нажимая Ctrl+C. Теперь импортируем дамп таблицы для каналов бота:
mysql -u dianouser -b dianodb<diano.sql
Дальше создадим задание на импорт нового канала. Удобнее всего для начала создать новый канал в Utopia через GUI клиент. Создайте канал, оформите его, скопируйте его channelid. В него мы будем грузить посты из Telegram канала. Допустим, возьмем Telegram канал: https://t.me/linuxgram
Важно! Бот работает только с публичными каналами. Брать контент из приватных каналов он не может, так как работа с Telegram происходит через сторонний парсер, это его ограничения.
Вы можете выставить своему каналу в Utopia права на чтение и запись для участников. Если вы выберете "только чтение", то это будет канал в привычном понимании. Если "чтение и запись", то это будет чат.
От url telegram канала нам потребуется только его тег - linuxgram. Для создания нового задания на перенос постов создадим .json
файл:
cd ~/utopiahome/diano-bot/cache
nano testchannel.json
вставим содержимое:
{
"source": {
"tag": "telegram",
"channelid": "linuxgram"
},
"destination": {
"tag": "utopia",
"channelid": "D968795137BF4BCDD232E7D5B04E95F2"
},
"params": {
"limit": 3
}
}
Далее настроим переменные окружения бота. Они записаны в .env
Пример содержимого .env
:
db_host=localhost
db_user=root
db_pass=
db_name=diano
db_enabled=1
utopia_host=127.0.0.1
utopia_token=
utopia_port=20000
max_file_size_mb=10
is_debug=0
измените этот файл.
в нашем примере, db_user
= dianouser
, db_name
= dianodb
, utopia_token
= 70E7D72AC6D91B5585E4B7D2F8A9A437
, utopia_port
= 22824
.
Дальше нам потребуется скрипт для преодической проверки постов:
nano ~/utopiahome/diano_update.sh
содержимое:
php ~/utopiahome/diano-bot/cron/execute_orders.php
Добавим задание в крон:
EDITOR=nano crontab -e
добавим строчку:
*/5 * * * * bash ~/utopiahome/diano_update.sh
Это будет означать проверку новых постов в каналах каждые 5 минут. Кстати у Utopia есть ограничение на не более чем 10 своих каналов на один аккаунт. Это ограничение я обхожу пока запуском дополнительных виртуальных машин.
Перезапустим крон, чтобы изменения вступили в силу.
systemctl restart crond
Проверить подключение к клиенту после настройки бота можно так:
cd ~/utopiahome/diano-bot/scripts
php test_utopia3.php
Если в результате ошибка или пустой массив, то что-то пошло не так или нет подключения к клиенту.
- Crypton, UUSD: F50AF5410B1F3F4297043F0E046F205BCBAA76BEC70E936EB0F3AB94BF316804