-
Notifications
You must be signed in to change notification settings - Fork 5
/
bot.py
205 lines (129 loc) · 9.25 KB
/
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
201
202
203
204
205
#IMPORTACIONES
import telebot
from telebot import *
from os import environ
from random import randrange
import json
import requests
bot = telebot.TeleBot(environ['TELEGRAM_TOKEN']) #Token del bot
# Variable que se utilizará en el comando /start para enviarlo como el texto del mensaje del bot
bot_text = '''
Este bot ha sido creado aquí. https://glitch.com/~{}
'''.format(environ['PROJECT_NAME'])
#Keyboard del menú
menuKeyboard = types.InlineKeyboardMarkup()
menuKeyboard.add(types.InlineKeyboardButton('Ayuda', callback_data='ayuda'),
types.InlineKeyboardButton('Creador', callback_data='creador'))
#Keyboard para apuntarse a la lista
yoNuncaKeyboard = types.InlineKeyboardMarkup()
yoNuncaKeyboard.add(types.InlineKeyboardButton('Me apunto', callback_data='yo'))
@bot.callback_query_handler(func=lambda call: call.data in ['ayuda', 'creador'])
def callback_handlerMenu(call):
cid = call.message.chat.id
mid = call.message.message_id
info = call.data
#bot.send_message(cid, "Has pulsado " + str(info))
if info == "ayuda":
#bot.send_message(cid, "Entramos en " + str(info))
bot.edit_message_text("Has pulsado ayuda", cid, mid, reply_markup=menuKeyboard, parse_mode="Markdown")
elif info == "creador":
#bot.send_message(cid, "Entramos en " + str(info))
bot.edit_message_text("Mi creador es : @batichico" , cid, mid, reply_markup=menuKeyboard , parse_mode="Markdown")
# Inicio lección 1- 19/07/2018
@bot.message_handler(commands=['start', 'help']) # Comando /start o /help . Cuando un usuario escriba cualquiera de los comandos
def send_welcome(message):
bot.reply_to(message, bot_text) # El bot responde con el contenido de la variable bot_text al mensaje.
@bot.message_handler(commands=['ayuda']) # Ejemplo de comando /ayuda que en vez de pasarle una variable, directamente escribimos
def ayuda(message):
bot.reply_to(message, 'ahora mismo te ayudo') # El bot responde 'ahora mismo te ayudo' al mensaje
#Inicio charla 2 - 31/07/2018
#Comando para simular una ruleta rusa en grupos de Telegram
@bot.message_handler(commands=['ruleta'])
def ruleta(message):
cid = message.chat.id #Id del chat
nombreUsuario = message.from_user.username #Nicknmae del usuario
idUsuario = message.from_user.id #Id del usuario
rnd = randrange(0, int(5)) #Generación de número aleatorio entre 0 y 5
if rnd == 4: #Si el número aleatorio es igual a 4
bot.send_message(cid, "Pummmm estas muerto @" + nombreUsuario ) #El bot envía mensaje de que has muerto y añade el nickname del usuario en el mensaje
bot.kick_chat_member(cid,idUsuario) #El bot expulsa al usuario del grupo restringiendolo del grupo
bot.unban_chat_member(cid, idUsuario) #El bot quita la restrinción al usuario para que así pueda volver al grupo
else: #Si el número aleatorio es diferente de 4
bot.send_message(cid, "Te has salvado amigo @" + nombreUsuario) #El bot envía un mensaje diciendo que se ha salvado añadiendo el nickname del usuario
#Fin charla 2 - 31/07/2018
@bot.message_handler(func=lambda message: True) # Respuestas del bot
def echo_message(message):
cid = message.chat.id # Guardamos en la variale cid el id de el mensaje recibido
if message.text.lower() == "holi": # Comparamos el texto el mensaje si es igual a 'holi'
id = message.from_user.id # Guardamos en una variable el id del usuario que envió el mensaje
nombre = message.from_user.first_name # Guardamos en una variable el nombre del usuario que envió el mensaje
bot.send_message(cid, 'holi ' + nombre ) # El bot responde 'holi' y después el nombre del usuario que guardamos en la variable da arriba
if id == 239822769: # Comparamos el id guardado del usuario con un id que le hemos pasado
bot.send_message( cid, 'Hola mi creador 😙') # Si es igual responde el mensaje que hemos introducido al chat indicado
elif id == 270803389 : # En este caso el id lo comparamos con otra id diferente
bot.send_message( cid, 'Holi manuel') # Aquí envia al chat que le hemos hablado 'Holi manuel'
bot.send_message( 115659666, 'Holi manuel') # Aquí probamos a pasarle en vez de cid, un id de un usuario y le enviará el mensaje por mensaje
#privado
else: # Si no se da ninguno de los resultados de arriba hará lo siguiente:
bot.send_message( cid, 'No estás registrado') # Enviará por el chat el mensaje 'No estás registrado'
if message.text.lower() == "mensaje": # Aquí probamos un if comparandolo con un String(una cadena de carácteres)
bot.send_message( cid, 'mensaje') # Si es así contestará 'mensaje'
#Fin lección 1 - 19/07/218
#Inicio charla 3 - 08/08/2018
if message.text.lower().startswith('participo con el numero'): #Escribimos Participo con el numero X (El que sea dentro del 0-10
cid = message.chat.id # Guardamos en la variale cid el id de el mensaje recibido.
mensaje=message.text # Guardamos el mensaje completo.
rnd = randrange(0, int(11)) # Generamos un número aleatorio del 0 al 10.
respuesta = ' '.join(mensaje.split(" ")[4:]) # Obtenemos el numero X del mensaje indicado.
# Comparamos el número obtenido con el número aleatorio.
if int(respuesta) == rnd: # Si el número obtenido == número aleatorio.
bot.send_message(cid, "Has acertado") # El bot envía el mensaje "Has acertado".
else: # Por no es igual.
bot.send_message(cid, "Has fallado, el número era " + str(rnd)) # El bot envía el mensaje Has fallado, el número era (el número correspondiente)
#Fin charla 3 - 08/08/2018
#Inicio charla 2 - 31/07/2018
if message.text.lower().startswith('bot di'): # Comprobamos si el texto el empieza por "bot di"
cid = message.chat.id #Id del chat
mensaje=message.text #Mensaje completo
respuesta = ' '.join(mensaje.split(" ")[2:]) #Respuesta = el texto que venga detrás de bot di.
#Ejemplo bot di hola. Con este código se guardará el "hola" porque se guardará
# todo lo que se escriba a partir del tercer espacio.
bot.send_message(cid, respuesta) #El bot envía la respuesta
#Respuesta a la entrada de un usuario al grupo
@bot.message_handler(func=lambda message: True, content_types=['new_chat_members'])
def command_bienvenida(m):
cid = m.chat.id #Id del chat
cname = m.chat.title #Nombre del grupo
bienvenida = "" #Variable dónde guardaremos el mensaje de bienvenida
if (m.new_chat_member.username is None): #Si el usuario no tiene nickname
nun = m.new_chat_member.first_name #Guardamos el primer nombre del usuario
if (m.new_chat_member.last_name is not None): #Si el usuario tiene apellido
nun += " "
nun += m.new_chat_member.last_name #Se guarda el apellido
else: #Si no tiene apellido
bienvenida = "Bienvenido al grupo" #Se guarda "Bienvenido al grupo"
bienvenida += str(cname) #Se le añade el nombre del chat detras de "Bienvenido al grupo"
bienvenida += " "
else: #Si el usuario tiene nickname
nun = m.new_chat_member.username #Se guarda en nun el nickname del usuario
bienvenida = "Bienvenido al grupo " #Se guarda "Bienvenido al grupo"
bienvenida += str(cname) #Se le añade el nombre del chat detras de "Bienvenido al grupo"
bienvenida += " @"
bot.send_message(cid, str(bienvenida) + str(nun)) #Se envía el mensaje de bienvenida concatenando el nombre/nickname del usuario
#Respuesta a la salida de un usuario del grupo
@bot.message_handler(func=lambda message: True, content_types=['left_chat_member'])
def command_bye(m):
cid = m.chat.id #Id del grupo
despedida = "" #Variable dónde guardaremos el mensaje de despedida
if (m.left_chat_member.username is None): #Si el usuario no tiene nickname
nun = m.left_chat_member.first_name #Guardamos el primer nombre del usuario
if (m.left_chat_member.last_name is not None): #Si el usuario tiene apellido
nun += " "
nun += m.left_chat_member.last_name #Se guarda el apellido
else: #Si el usuario tiene nickname
nun = m.left_chat_member.username #Se guarda en nun el nickname del usuario
despedida = "Hasta luego " #Se guarda "Hasta luego"
despedida += " @"
bot.send_message(cid, str(despedida) + str(nun)) #Se envía el mensaje de despedida concatenando el nombre/nickname del usuario
#Fin charla 2 - 31/07/2018
bot.set_webhook("https://{}.glitch.me/{}".format(environ['PROJECT_NAME'], environ['TELEGRAM_TOKEN']))