Как создать бота Telegram для отправки команд RaspberryPi

Я хочу знать, как создать бота и отправить сообщение в Telegram, а также отправить команду, например, /commandPi sudo apt-get update ... Вам нужно настроить бота с информацией и создать токен, но я не знаю, как это запрограммировать. Вам нужно изменить «архив бота» или что-то еще с Python? Тай


person Chuflitas    schedule 03.05.2018    source источник


Ответы (1)


ПРИМЕЧАНИЕ. Не рекомендуется разрешать прямой доступ к командной строке через веб-интерфейс. Кто-то потенциально может отправить вашему боту вредоносные команды для выполнения на вашем Raspberry Pi и получить над ним контроль!

То, что я описываю, можно найти (и во многих других практических руководствах): https://www.hackster.io/Salmanfarisvp/telegram-bot-with-raspberry-pi-f373da

Создайте нового бота, отправив запрос BotFather:

/новыйбот

и следуйте инструкциям BotFather.

Установите git и python, если их нет на вашем RPi.

Загрузите существующий скрипт Python бота для изменения (как это предлагается в статье, на которую я ссылаюсь):

git clone https://github.com/salmanfarisvp/TelegramBot.git

или создать свой собственный.

Отредактируйте файл telegrambot.py и измените строку

bot = telepot.Bot('Bot Token')

Чтобы содержать ваш токен вместо токена бота

Наконец, измените строки (или добавьте новые):

if command == 'on':
elif command =='off':

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

if command.startswith('commandPi'):

и извлеките остальные аргументы для передачи в вашу командную строку

arguments = command[8:]

и вызовите apt-get, например, используя подпроцесс, как описано в https://stackoverflow.com/a/8482033/1619146

from subprocess import STDOUT, check_call
import os
check_call(['apt-get', 'update'],
     stdout=open(os.devnull,'wb'), stderr=STDOUT) 

Также проверьте https://core.telegram.org/bots.

person Asmund    schedule 03.05.2018
comment
Спасибо, мужик! Я знаю о доступе прямо к командной строке, вы думаете, что я могу защитить с помощью простой команды, когда я запрашиваю командную строку в телеграмме, бот запрашивает у меня пароль для доступа к командной строке... Что вы думаете об этом, просто .equals или что-то еще, но на Python xD - person Chuflitas; 03.05.2018
comment
@Chuflitas Это может быть выход, или, может быть, разрешить только определенные подкоманды, а не произвольные параметры, которые используются напрямую. Ознакомьтесь с owasp.org/index.php/ и owasp.org в целом для хороших советов по обеспечению безопасности вашего сервера. Важно знать об этом, рассматривать альтернативы и смягчать возможные векторы атак. - person Asmund; 03.05.2018