From 7d5ccfc8158d243fdfec1bdc93c2347ffd35e62a Mon Sep 17 00:00:00 2001 From: Hugo Levy-Falk Date: Wed, 4 Mar 2020 15:49:42 +0000 Subject: [PATCH] Inline bot --- etc/klafytg/bots.d/sel.toml | 23 ++++++++++++----------- klafytg/bot.py | 34 ++++++++++++++++++++++++++-------- 2 files changed, 38 insertions(+), 19 deletions(-) diff --git a/etc/klafytg/bots.d/sel.toml b/etc/klafytg/bots.d/sel.toml index 772f453..b4a25a1 100644 --- a/etc/klafytg/bots.d/sel.toml +++ b/etc/klafytg/bots.d/sel.toml @@ -8,7 +8,8 @@ channels = [ -311159479, -320933904, -45394299, - -1001413424448 # Bot et des culs + -1001413424448, # Bot et des culs + 452970435 # @Klafyvel ] admins = [ 452970435 # klafyvel @@ -21,25 +22,25 @@ quotes = [ "J'ai vraiment hâte de rencontrer les N1As de l'année prochaine.", "À Metz vous êtes vraiment des experts.", "Centrale Metz", - " Il faut vraiment être con pour acheter une imprimante Brother.", + "<@Tipunchetrhum> Il faut vraiment être con pour acheter une imprimante Brother.", " bon, babel avec un pare-feu nftables, vous avez prévu d'y réfléchir pour 2042 ou ça a des chances d'arriver sous peu ?", - " je glande presque autant qu'un pelec", - " choisi l'excuse du moment chez ton supelec : l'inté, la campagne, les partiels, les vacances", - " ouais mais j'ai jamais vu de gens aussi efficaces que les pelec pour justifier pq ils peuvent pas faire un truc", - " Chirac on connaît tous tes performances scolaires t'inquiète pas", + "<@Chibrac> je glande presque autant qu'un pelec", + "<@Chibrac> choisi l'excuse du moment chez ton supelec : l'inté, la campagne, les partiels, les vacances", + "<@Chibrac> ouais mais j'ai jamais vu de gens aussi efficaces que les pelec pour justifier pq ils peuvent pas faire un truc", + "<@Grubigrub> Chirac on connaît tous tes performances scolaires t'inquiète pas", "Un jour j'irais me frotter à #federez, pour voir du gros sel.", " un prof de maths est généralement compétent en maths, alors que j’attends toujours de rencontrer un prof d’info qui est capable de mettre quelque chose en prod", " D'après le fameux théorème centralien je pense que j'ai droit donc j'ai le droit", " dtf vous arriverez pas au niveau de via qui découvre tous les ans des thunes placées sur des comptes random", " il faudrait faire un achivement : a réussi a désinstaller le virtualiseur du virtualiseur", - " De toute facon il y a ceux qui ont réussi à conserver leur Coopé™ et ceux qui doivent s'exiler pour en retrouver une", + "<@Guimoz> De toute facon il y a ceux qui ont réussi à conserver leur Coopé™ et ceux qui doivent s'exiler pour en retrouver une", " je rajoute du gros sel façon ViaRézo \n fais gaffe bientôt le steak va coder en node", - " Je préfère parler de limitation de débit afin de prioriser les services critiques.", - " Le jour où @lebanni est engagé dans une entreprise,j'y enlève toutes mes actions.", - " Toute façon, les prezs rezo c'est souvent des pots de fleurs avec une clé root.", + "<@Klafyvel> Je préfère parler de limitation de débit afin de prioriser les services critiques.", + "<@Grubigrub> Le jour où @lebanni est engagé dans une entreprise,j'y enlève toutes mes actions.", + "<@Nanoy> Toute façon, les prezs rezo c'est souvent des pots de fleurs avec une clé root.", "<@lebanni> Je suis un gros quetard", "La soeur du banni : Matthieu, tu peux m'aider sur mon exo de maths ? @lebanni : Flemme, mon temps vaut de l'argent", - " Un JT c'est pas comme des nocturnes FedeRez, ça s'organise pas tout seul." + "<@Nanoy> Un JT c'est pas comme des nocturnes FedeRez, ça s'organise pas tout seul." ] ping_extra = [ "^[sS]el", diff --git a/klafytg/bot.py b/klafytg/bot.py index 431763e..5cdc690 100644 --- a/klafytg/bot.py +++ b/klafytg/bot.py @@ -45,10 +45,14 @@ class Bot: self.quote_handler = CommandHandler('ping', self.on_ping) self.match_handler = MessageHandler(Filters.text, self.on_message) + self.inline_quote_handler = InlineQueryHandler(self.on_inline) + self.dispatcher.add_handler(self.inline_quote_handler) self.dispatcher.add_handler(self.quote_handler) self.dispatcher.add_handler(self.match_handler) def is_allowed(self, update, context): + if update.inline_query: + return update.effective_user.id in self.channels return update.effective_chat.id in self.channels def start(self): @@ -67,13 +71,27 @@ class Bot: if not query: return results = list() - results.append( - InlineQueryResultArticle( - id=query.upper(), - title='Caps', - input_message_content=InputTextMessageContent(query.upper()) - ) - ) + c = { + "channel": getattr(update.effective_chat, "title", ""), + "name": self.name, + "user": update.effective_user.name, + "message": getattr(update.effective_message, "text", ""), + } + for i,quote in enumerate(self.pings): + actual_quote = "" + if not callable(quote): + actual_quote = quote.format(**c) + else: + actual_quote = quote(self, username, channel, message) + if re.search(query, actual_quote) or not query: + results.append( + InlineQueryResultArticle( + id=i, + title=actual_quote, + input_message_content=InputTextMessageContent(actual_quote) + ) + ) + context.bot.answer_inline_query(update.inline_query.id, results) @@ -81,7 +99,7 @@ class Bot: if not self.is_allowed(update, context): context.bot.send_message( chat_id=update.effective_chat.id, - text="Sorry, mamma told me not to talk with random strangers.", + text="Sorry, mamma told me not to talk with random strangers. You need to allow chat id {}.".format(update.effective_chat.id), reply_to_message_id=update.effective_message.message_id ) return