[Python] Programmer pour Telegram
Salut à tous! J’écris encore un billet nocturne pour parler d’un petit projet que j’ai conçu depuis deux jours déjà et qui commence à prendre forme. Vous connaissez Telegram? C’est un chat qui se base sur la synchro sur plusieurs supports (PC/Terminaux mobiles/Client web), le chat en groupe ou 1-à-1, avec ou sans cryptage point-à-point pour ce dernier. Dernièrement, l’équipe a publié toute une API REST(?) pour pouvoir créer des bots facilement qui puissent intéragir avec Telegram.
Pris d’une folie Python suite à un autre projet, bien plus important pour ce site, j’ai décidé de faire un bot qui va servir le groupe dans lequel je traîne. Ne sachant pas à quoi il servira par la suite… bah je l’ai tellement rendu versatile que le code principal est devenu un projet à part entière : une librarie/API de communication avec l’API Telegram-Bot.
Le bestiau se base sur une attente d’évènements (des updates venant du serveur) qui seront dispatchés à des handlers qui s’attacheront à la classe Telegram
en implémentant une ou plusieurs des fonctions qu’il peut appeler. Ainsi, un plugin qui va logger un chat va intéragir ainsi avec Telegram:
class LoggerHandler:
def __init__(self, filename):
try:
self.file = open(filename, 'a')
except IOError:
self.file = None
print("Couldn't open {} for log writing".format(filename))
def on_text(self, tg, message):
if self.file is not None:
date = datetime.fromtimestamp(message.date)\
.strftime('%Y-%m-%d %H:%M:%S')
self.file.write("[{}]{} : {}\n"
.format(date,
message.from_user.username,
message.text))
self.file.flush()
def on_reply(self, tg, message):
print("Reply")
def on_sticker(self, tg, message):
date = datetime.fromtimestamp(message.date)\
.strftime('%Y-%m-%d %H:%M:%S')
self.file.write("[{}]{} sent a sticker (id:{}).\n"
.format(date, message.from_user.username, message.sticker.file_id))
self.file.flush()</pre>
Notez les lignes en surbrillance : ces fonctions seront appelées par Telegram
quand une update de ces types seront reçues.
Voilà, pour le moemnt, je vous laisse avec l’adresse du repo du coeur du futur bot : https://github.com/Eiyeron/telegram-bot-api/ Amusez-vous bien avec le Python!