Начав этот долгий путь построения своего медиацентра с Kodi на борту, я изначально ставил перед ним задачи, немного выходящие за рамки его основного функционала, такие как просмотр фильмов или сериалов. Считаю, что устройство, работающее 24/7 может и должно быть использовано по максимуму. Вот так, постепенно, мой сервер обрастал все новыми и новыми возможностями. Весь этот путь – в предыдущих публикациях. К сожалению, объем одной публикации на хабре ограничен, потому всё, чем хотел бы поделиться никак не уместить в один пост. Разделил на несколько частей...Часть 1. Аппаратная часть, подготовка ОС, базовая настройка сервера и KodiЧасть 2. YouTube, qBittorrent, управление Yatse и Kore, учет трафика VnStatЧасть 3. Ретро-игрыЧасть 4. Архив IPTVЧасть 5. Яндекс.МузыкаЧасть 6. MariaDB и синхронизация медиатекиЧасть 7. Управление iOS-устройствомЧасть 8. Telegram-бот для qBittorrentЧасть 9. SpotifyЧасть 10. IVI и NetflixЧасть 11. Kodi+Plex Одной из основных задач моего сервера – торрент-качалка. Использую ее не только для видео-контента, но и для загрузки какой-то общей информации, как по работе, так и для дома. Нет потребности во включенном ПК и необходимости дожидаться загрузки, оставляя на ночь и так далее. Есть ведь бесшумный медиацентр, который работает и днем и ночью. И с этой задачей он справляется безупречно. Мне по душе qBittorrent, ввиду его «легкости», «бесплатности» и отличного веб-интерфейса, полностью повторяющего GUI-интерфейс. Для android-устройств есть приложение, с которого также очень удобно управлять загрузками - qBittorrent Controller. И все бы ничего, но иногда есть потребность добавить торрент на загрузку, находясь вне дома. Варианты с покупкой статического IP-адреса, сервисов DDNS или банального AnyDesk с постоянным доступом меня не устраивали. Благо, в наше время, с активно развивающимися социальными сетями, с этой задачей легко справится Telegram. У вас всегда будет под рукой доступ к домашней торрент-качалке, где бы вы не находились и прямо из мессенджера. По-моему, это красивое решение. Изобретать и писать с нуля Telegram-бота не вижу особого смысла, в сети есть масса готовых и стабильных решений. Хотя при большом желании и базовых навыках Python, это тоже вполне реально, учитывая подробную документацию и описание API как со стороны Telegram, так и qBittorrent. Поэтому, если вы преследуете еще и образовательную цель - это отличный повод в чем-то разобраться и сделать самостоятельно. Сегодня мы воплотим идею с Telegram-ботом в жизнь. Как и прежде, вся реализация будет на базе Kubuntu 20.04. Бота буду использовать с итальянскими корнями - QBittorrentBot. Автор - Mattia Vidoni (ch3p4ll3), как сам он себя описывает – «19yo Italian boy who likes do things» («19-летний итальянский парень, который любит что-то делать»). И так, приступим. Сначала, мы создадим самого Telegram-бота в мессенджере, а уже потом перейдем к его интеграции и взаимодействию с торрент-клиентом на нашем сервере. Для регистрации бота открываем в Telegram чат с ботом BotFather. Это самый простой способ, не требующий специальных навыков. Начинаем общение с BotFather, отправив ему команду на создание нового бота - /newbot. Вводим имя для бота – например, «Home qBittorrent Control». Следующим шагом вводим username –  должно быть уникально в рамках всей социальной сети и на конце содержать «bot» или «_bot». Вводим, если имя неуникально – вам об этом сообщит бот и попросит ввести повторно. Я использовал username – «myqbittorrent_bot», имя свободно, наш бот успешно создан и нам сообщили его токен для доступа к HTTP API. Сохраняем его, он нам еще пригодится. Теперь можно добавить нашего бота t.me/<имя-бота> и запустить. Пока он ничего, конечно, не умеет и какого-то диалога у вас с ним не выйдет... В BotFather по команде /mybots вы можете выбрать вашего бота и получить по нему информацию (токен, например, если забыли). Также вы можете редактировать своего бота. Изменить имя или описание, загрузить аватарку («Edit Botpic»). Что я, кстати, и сделал. Для загрузки аватарки используйте изображение с разрешением не менее 250x250 пикселей. Отправлять необходимо как фото, а не файл. Бот создан, теперь необходимо получить ID вашего аккаунта в Telegram, как администратора этого бота. Что бы его узнать – обратимся к еще одному системному боту – https://t.me/myidbot. По команде /getid вы получите свой ID. Его сохраняем – он нам тоже понадобится чуть позже. Последнее, что нам нужно от Telegram – это API ID и API HASH. Для получения доступа к API, необходимо перейти по ссылке и зарегистрировать ваше «приложение», как разработчику. На один номер телефона – один ID. После заполнения всех полей вы получите заветные значения API ID и API HASH. Итого, по завершении всего описанного выше, у нас на руках должны быть:•    Токен Telegram-бота;•    ID аккаунта в Telegram;•    API ID;•    API HASH. Дело за малым – осталось прикрутить этого бота к нашему серверу и подружить с qBittorrent. Сам торрент-клиент мы устанавливали еще в первой публикации. Если у вас он еще не установлен – устанавливаем: В разделе «Веб-интерфейс» настроек qBittorrent включаем «Веб-интерфейс (удаленное управление)». При необходимости меняем логин и пароль или порт. Логин по умолчанию – admin;Пароль – adminadmin;Порт – 8080. Теперь займемся внедрением нашего Telegram-бота. Скачиваем бота из репозитория нашего 19-летнего итальянского парня и распаковываем по пути /opt/qbittorrent-bot/ с предварительным созданием этого каталога и предоставлением прав на чтение и запись. Путь можно выбрать, любой, который больше подходит вам, но все инструкции ниже, будут построены именно на этом расположении бота, имейте ввиду. Теперь нам необходимо сконфигурировать бота, указав все параметры подключения, как к Telegram-боту, так и к торрент-клиенту qBittorrent. Параметры будем указывать в конфигурационном файле config.py. Открываем его любым текстовым редактором. Я использую mcedit: Обратите внимание, что изначально для каждого параметра есть getenv() – удаляем, указываем просто в кавычках, как на скриншоте: QBITTORRENT_IP – IP-адрес сервера, где работает торрент-клиент qBittorrent;QBITTORRENT_PORT – порт удаленного подключения к qBittorrent;QBITTORRENT_USER – имя пользователя для удаленного подключения к qBittorrent;QBITTORRENT_PSW - пароль для удаленного подключения к qBittorrent;TG_TOKEN – токен нашего Telegram-бота;API_ID – API ID, полученный в личном кабинете разработчика Telegram;API_HASH – API HASH, полученный в личном кабинете разработчика Telegram;AUTHORIZED_IDS - ID вашего аккаунта в Telegram. Скачанный нами бот разработан на Python и требует некоторых python-библиотек, в том числе и библиотеки для работы с qBittorrent API и Telegram API. Для установки всех необходимых зависимостей воспользуемся утилитой pip. Если она не установлена – устанавливаем: Теперь устанавливаем нашего бота: И запускаем его: В случае успешного запуска в консоли вы должны получить уведомление: Для проверки добавляем любой торрент на загрузку в qBittorrent. Идем в Telegram, к нашему боту и отправляем ему команду /start. Если все сделано правильно, то в ответ вы получите меню управления вашими загрузками. К слову, постоянно вызывать это меню командой /start в дальнейшем не нужно (если вы не будете очищать переписку). При переходе в чат с ботом у вас это меню будет уже там. Теперь момент истины, нажимаем на пиктограмму «List». Бот вам должен вернуть список всех торрентов. Пробуйте в режиме онлайн управлять, ставить на паузу конкретный торрент или все, добавлять новые. Все должно работать. Для добавления нового торрента к загрузке можно воспользоваться magnet-ссылкой, отправив ее в чат или же отправить непосредственно torrent-файл. Результат одинаков. Бот должен обработать вашу команду и передать ее в qBittorrent. Проверяйте, этот торрент уже должен быть в очереди торрент-клиента. Все меню, к слову, на английском языке. Если вам комфортнее другой язык – можете внести изменения в файл bot.py во всех секциях, относящихся к меню и заменить на необходимые вам слова или словосочетания. Все отлично, бот работает, торрент-клиент управляется из мессенджера. Цель достигнута. Единственное, что осталось сделать – это добавить его в качестве службы в систему и заставить запускаться автоматически, при старте нашего медиацентра. Ведь сейчас мы его запустили вручную и если прервать выполнение (Ctrl+C) – прервется и общение с нашим ботом. Будем использовать подсистему systemd. Создаем файл с описанием нашей службы для запуска Telegram-бота (назовем службу, например, qbittorrent-bot): Вставляем содержимое (изменить User на вашего пользователя в системе): Пересобираем все службы systemd: И запускаем нашу службу с Telegram-ботом: Проверяем, все ли успешно: В ответ вы должны получить статус «Active: active (running)»: Теперь добавляем службу в автозагрузку: Но необходимо понимать, если при запуске бота не запущен qBittorrent – бот не запустится из-за ошибки подключения к торрент-клиенту. Поэтому стоит позаботиться об автозапуске и самого qBittorrent тоже. Я добавил через параметры системы Kubuntu. Все готово, можно перезагрузить систему и проверить автозапуск. Теперь ваш домашний сервер стал еще чуточку «умнее» и «послушнее». Всем хорошего времяпрепровождения с вашим медиацентром!