-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathraspberry_telegram_bot.py
200 lines (179 loc) · 8.27 KB
/
raspberry_telegram_bot.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#import
#time.sleep(60)
import os
import re
import socket
import telebot
from telebot import types
from requests import get
#Aqui debes poner entre las '' el token de tu bot
TOKEN = ''
bot = telebot.TeleBot(TOKEN)
#Lista de comandos que tiene el bot, esta se mostrará en la ayuda
commands = {
'about': 'Información sobre el bot y creador',
'ayuda': 'Lista de comandos disponibles',
'reiniciar': 'Reinicia la Raspberry',
'apagar': 'Apaga la Raspberry',
'exec': 'Ejecuta un comando por terminal',
'temperatura': 'Temperatura del procesador',
'usb': 'Dispositivos conectados a puertos USB',
'red': 'Visualiza la conf de la red e interfaces',
'ping': 'Realiza ping, comprueba la conexión',
'memoria': 'Uso y capacidad de las memorias',
'liberar': 'Vacia la memoria swap',
'ip_privada': 'Expone la IP privada',
'ip_publica': 'Expone la IP publica',
'hostname': 'Muestra el nombre del equipo'
}
#Comando /start cuando se inicia el bot
@bot.message_handler(commands=['start'])
def command_help(m):
name = m.from_user.first_name
bot.send_message(m.chat.id, '¡Hola ' + name + '! Este bot es desarrollado por Amdr0meda, para ver la guia de uso y más información visita:')
bot.send_message(m.chat.id, 'https://github.com/Amdr0meda/Raspberry_telegram_bot')
bot.send_message(m.chat.id, 'Utiliza /ayuda ver los comandos disponibles')
#Comando /about información del bot y codigo
@bot.message_handler(commands=['about'])
def command_long_text(m):
if m.chat.id == (TU_ID_AQUI):
about_bot = 'Este bot es desarrollado por Amdr0meda, para ver la guia de uso y más información visita el repositorio del proyecto en:\n\n https://github.com/Amdr0meda/Raspberry_telegram_bot'
bot.send_message(m.chat.id, about_bot)
else:
bot.send_message(m.chat.id, 'No estas autorizado. Utiliza /about para obtener mas información')
#Comando /ayuda que responde enviando un texto con los comandos disponibles
@bot.message_handler(commands=['ayuda'])
def command_help(m):
if m.chat.id == (TU_ID_AQUI):
help_text = 'Lista de comandos disponibles.\n\n'
for key in commands:
help_text += '/' + key + ' - '
help_text += commands[key] + '\n'
bot.send_message(m.chat.id, help_text)
else:
bot.send_message(m.chat.id, 'No estas autorizado. Utiliza /about para obtener mas información')
#Comando /reiniciar reinicia la Raspberry
@bot.message_handler(commands=['reiniciar'])
def command_long_text(m):
if m.chat.id == (TU_ID_AQUI):
bot.send_message(m.chat.id, 'Reiniciando, recibirás un mensaje cuando se complete.')
os.system('sudo shutdown -r now')
else:
bot.send_message(m.chat.id, 'No estas autorizado. Utiliza /about para obtener mas información')
#Comando /apagar apaga la Raspberry
@bot.message_handler(commands=['apagar'])
def command_long_text(m):
if m.chat.id == (TU_ID_AQUI):
bot.send_message(m.chat.id, 'Reiniciando, recibirás un mensaje cuando se complete.')
os.system('sudo shutdown -r now')
else:
bot.send_message(m.chat.id, 'No estas autorizado. Utiliza /about para obtener mas información')
#Comando /ip_privada que muestra la ip privada del equipo
@bot.message_handler(commands=['ip_privada'])
def command_long_text(m):
if m.chat.id == (TU_ID_AQUI):
f = os.popen('hostname -I')
ip_private = f.read()
bot.send_message(m.chat.id, 'Tu direccion IP privada es: ')
bot.send_message(m.chat.id, ip_private)
else:
bot.send_message(m.chat.id, 'No estas autorizado. Utiliza /about para obtener mas información')
#Comando /ip_publica que muestra la ip publica del equipo
@bot.message_handler(commands=['ip_publica'])
def command_long_text(m):
if m.chat.id == (TU_ID_AQUI):
ip_public = get('https://api.ipify.org').text
bot.send_message(m.chat.id, 'Tu direccion IP publica es: ')
bot.send_message(m.chat.id, ip_public)
else:
bot.send_message(m.chat.id, 'No estas autorizado. Utiliza /about para obtener mas información')
#Comando /hostame muestra el nombre del equipo
@bot.message_handler(commands=['hostname'])
def command_long_text(m):
if m.chat.id == (TU_ID_AQUI):
hostname = socket.gethostname()
bot.send_message(m.chat.id, 'El nombre de tu equipo es:')
bot.send_message(m.chat.id, hostname)
else:
bot.send_message(m.chat.id, 'No estas autorizado. Utiliza /about para obtener mas información')
#Comando /exec que responde ejecutando X comando en la terminal
@bot.message_handler(commands=['exec'])
def command_long_text(m):
if m.chat.id == (TU_ID_AQUI):
bot.send_message(m.chat.id, 'Resultado del comando:')
f = os.popen(m.text[len('/exec '):])
result = f.read()
bot.send_message(m.chat.id, result)
else:
bot.send_message(m.chat.id, 'No estas autorizado. Utiliza /about para obtener mas información')
#Comando /temperatura muestra la temperatura del procesador y un comentario
@bot.message_handler(commands=['temperatura'])
def command_long_text(m):
if m.chat.id == (TU_ID_AQUI):
f = os.popen('vcgencmd measure_temp')
dump = f.read()
cleaned = re.sub(r"[temp='C]","", dump)
temperature = cleaned.rstrip()
if (temperature <= '40'):
bot.send_message(m.chat.id,'Temperatura normal: ' + temperature + ' °C')
elif (temperature <= '50'):
bot.send_message(m.chat.id,'Temperatura alta: ' + temperature + ' °C')
else:
bot.send_message(m.chat.id,'Temperatura muy alta: ' + temperature + ' °C')
else:
bot.send_message(m.chat.id, 'No estas autorizado. Utiliza /about para obtener mas información')
#Comando /usb muestra los dispositivos conectados a puertos USB
@bot.message_handler(commands=['usb'])
def command_long_text(m):
if m.chat.id == (TU_ID_AQUI):
f = os.popen('lsusb')
result = f.read()
bot.send_message(m.chat.id, result)
else:
bot.send_message(m.chat.id, 'No estas autorizado. Utiliza /about para obtener mas información')
#Comando /red Visualiza la conf de la red y sus interfaces
@bot.message_handler(commands=['red'])
def command_long_text(m):
if m.chat.id == (TU_ID_AQUI):
f = os.popen('ifconfig')
result = f.read()
bot.send_message(m.chat.id, result)
else:
bot.send_message(m.chat.id, 'No estas autorizado. Utiliza /about para obtener mas información')
#Comando /ping con un ping a Google 2 veces
@bot.message_handler(commands=['ping'])
def command_long_text(m):
if m.chat.id == (TU_ID_AQUI):
f = os.popen('ping www.google.com -c 1')
result = f.read()
bot.send_message(m.chat.id, 'El resultado del ping a www.google.com es: \n\n' + result)
else:
bot.send_message(m.chat.id, 'No estas autorizado. Utiliza /about para obtener mas información')
#Comando /memoria muestra el uso y capacidad de las memorias
@bot.message_handler(commands=['memoria'])
def command_long_text(m):
if m.chat.id == (TU_ID_AQUI):
f = os.popen('free -m')
result = f.read()
bot.send_message(m.chat.id, '(Memoria mostrada en megabytes)')
bot.send_message(m.chat.id, result)
else:
bot.send_message(m.chat.id, 'No estas autorizado. Utiliza /about para obtener mas información')
#Comando /memoria muestra el uso y capacidad de las memorias
@bot.message_handler(commands=['liberar'])
def command_long_text(m):
if m.chat.id == (TU_ID_AQUI):
f = os.popen('sudo swapoff -a ; sudo swapon -a')
bot.send_message(m.chat.id, 'La memoria swap ha sido liberada')
else:
bot.send_message(m.chat.id, 'No estas autorizado. Utiliza /about para obtener mas información')
#Texto para cuando el usuario escribe cualquier comando / palabra que no este declarada
@bot.message_handler(func=lambda message: True, content_types=['text'])
def command_default(m):
if m.chat.id == (TU_ID_AQUI):
bot.send_message(m.chat.id, 'No te entiendo, escribe /ayuda para ver los comandos disponibles')
else:
bot.send_message(m.chat.id, 'No estas autorizado. Utiliza /about para obtener mas información')
bot.infinity_polling()