Telegram Remote Control Bot
Цель
Основная цель – разработка ПО для управления ЭВМ по средствам мессенджера
Telegram.
ПО должно отвечать следующим свойствам:
• Надежность и стабильность
• Модульность
• Переносимость
• Функциональность
Почему Telegram?
Telegram был выбран сразу по нескольким причинам:
• Надежность и конфиденциальность
• Наличие клиентов почти под все мобильные платформы
• Open source
• Удобный API для создания ботов
• У ботов есть особые «перки», e.g. кастомные клавиатуры:
Для чего это все?
Для чего угодно. С помощью этого бота можно будет:
• сделать «умный дом»,
• создать систему мониторинга за местностью
• удаленно управлять своим компьютером.
Благодаря особенностям бота и Telegram, я хочу добиться
максимально возможного охвата направлений его применения.
Пример использования
Что сделано на данный момент?
TRC Bot разрабатывается на C++14 с использованием сторонних
Библиотек tgbot-cpp и nlohmann json.
На сегодняшний день бот поддерживает:
• Отправку текстовых сообщений
• Отправку фотографий
За счет чего это работает?
Действия достигаются за счет запуска указанных исполняемых файлов
(например Bash-скриптов).
RMC Bot Чтение JSON конфига
Token
Tasks
Task 1
Task 2
Task N
Пример: config.json
{
"token":"224432852:AAG_Zz2qVsGgsEIG4W30GkP-7cIrVgC16sc",
"tasks":
[
{
"taskName":"photo", //название команды
"taskCmd":"/home/user/photo.sh", //путь до исполняемого файла
"taskArgs":"/dev/video0", //аргумент, который принимает исполняемый файл
"reactFrame":"!picture", //тип ответа пользователю
"reactDataSrc":"!output„ //откуда берется ответ
}
]
}
Пример: photo.sh
#!/bin/bash
FILE="/tmp/telegram/photo.jpg"
ffmpeg -y -loglevel quiet -f video4linux2 -i $1 -vframes 1 $FILE
echo $FILE
Тестирование
При тестировании с разными модулями (функционал которых
поддерживается) ошибок и проблем замечено не было.
Бот проработал без остановки два дня, при этом в любой момент
времени корректно обрабатывал приходящие на него запросы.
Что будет дальше?
• Поддержка передачи видео, аудио, etc.
• Более гибкие возможности для подключения модулей
• Обновление конфига в реальном времени
• Использование «перков» ботов Telegram
• Портирование на BeagleBone и Raspberry Pi
• Работа над повышением стабильности и надежности
• Покрытие проекта модульными тестами
Недостатки на данный момент
• Слишком «сырой», нет поддержки важного функционала
• В tgbot-cpp не реализован метод, который позволит загрузить файл на
хост
• Реализовано только на x86
• При портировании на BeagleBone/Raspberry Pi могут возникнуть
сложности
The End
• Бот: https://github.com/whiteforest440/rms_bot
• Telegram bot C++ API: https://github.com/reo7sp/tgbot-cpp
• JSON C++: https://github.com/nlohmann/json

Telegram Bot

  • 1.
  • 2.
    Цель Основная цель –разработка ПО для управления ЭВМ по средствам мессенджера Telegram. ПО должно отвечать следующим свойствам: • Надежность и стабильность • Модульность • Переносимость • Функциональность
  • 3.
    Почему Telegram? Telegram былвыбран сразу по нескольким причинам: • Надежность и конфиденциальность • Наличие клиентов почти под все мобильные платформы • Open source • Удобный API для создания ботов • У ботов есть особые «перки», e.g. кастомные клавиатуры:
  • 4.
    Для чего этовсе? Для чего угодно. С помощью этого бота можно будет: • сделать «умный дом», • создать систему мониторинга за местностью • удаленно управлять своим компьютером. Благодаря особенностям бота и Telegram, я хочу добиться максимально возможного охвата направлений его применения.
  • 5.
  • 6.
    Что сделано наданный момент? TRC Bot разрабатывается на C++14 с использованием сторонних Библиотек tgbot-cpp и nlohmann json. На сегодняшний день бот поддерживает: • Отправку текстовых сообщений • Отправку фотографий
  • 7.
    За счет чегоэто работает? Действия достигаются за счет запуска указанных исполняемых файлов (например Bash-скриптов). RMC Bot Чтение JSON конфига Token Tasks Task 1 Task 2 Task N
  • 8.
    Пример: config.json { "token":"224432852:AAG_Zz2qVsGgsEIG4W30GkP-7cIrVgC16sc", "tasks": [ { "taskName":"photo", //названиекоманды "taskCmd":"/home/user/photo.sh", //путь до исполняемого файла "taskArgs":"/dev/video0", //аргумент, который принимает исполняемый файл "reactFrame":"!picture", //тип ответа пользователю "reactDataSrc":"!output„ //откуда берется ответ } ] }
  • 9.
    Пример: photo.sh #!/bin/bash FILE="/tmp/telegram/photo.jpg" ffmpeg -y-loglevel quiet -f video4linux2 -i $1 -vframes 1 $FILE echo $FILE
  • 10.
    Тестирование При тестировании сразными модулями (функционал которых поддерживается) ошибок и проблем замечено не было. Бот проработал без остановки два дня, при этом в любой момент времени корректно обрабатывал приходящие на него запросы.
  • 11.
    Что будет дальше? •Поддержка передачи видео, аудио, etc. • Более гибкие возможности для подключения модулей • Обновление конфига в реальном времени • Использование «перков» ботов Telegram • Портирование на BeagleBone и Raspberry Pi • Работа над повышением стабильности и надежности • Покрытие проекта модульными тестами
  • 12.
    Недостатки на данныймомент • Слишком «сырой», нет поддержки важного функционала • В tgbot-cpp не реализован метод, который позволит загрузить файл на хост • Реализовано только на x86 • При портировании на BeagleBone/Raspberry Pi могут возникнуть сложности
  • 13.
    The End • Бот:https://github.com/whiteforest440/rms_bot • Telegram bot C++ API: https://github.com/reo7sp/tgbot-cpp • JSON C++: https://github.com/nlohmann/json