Welcome back my bots
This commit is contained in:
parent
4323798b54
commit
98dd2ef3fa
11 changed files with 231 additions and 2281 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
|||
.env
|
||||
*.log
|
||||
|
|
62
etc/klafytg/bots.d/gutzwi.toml
Normal file
62
etc/klafytg/bots.d/gutzwi.toml
Normal file
|
@ -0,0 +1,62 @@
|
|||
[bot]
|
||||
name = "Manu"
|
||||
# Name of the environment variable to fetch
|
||||
token = "GUTZWITOKEN"
|
||||
# time between interventions in seconds
|
||||
min_time = 3
|
||||
channels = [
|
||||
-311159479,
|
||||
-320933904,
|
||||
-45394299
|
||||
]
|
||||
admins = [
|
||||
452970435 # klafyvel
|
||||
]
|
||||
[ping]
|
||||
quotes = [
|
||||
"Les ordinateurs, c'est comme les galères romaines : moins il y a de RAM, et plus ça rame !",
|
||||
"Il pédale dans la choucroute !",
|
||||
"On a quand même de la chance, on vit beaucoup plus longtemps que nos ordinateurs.",
|
||||
"Intel c’est pas le contraire de \"tel autre\" hein, c’est la marque.",
|
||||
"Et depuis, je n'ai plus jamais utilisé de Macs.",
|
||||
"\"Plug and Play\" pour moi c’est plutôt \"je plug et j’me plains.\"",
|
||||
"Soit ils on changé la route, soit il y a un bogue.",
|
||||
"Vous avez besoin de ce cours… \"ce cours\" en en deux mots hein ! Pas \"secours\"!",
|
||||
"Machine de Mealy. [Prononcé \"Machine de Millet.\"]",
|
||||
"La myopie forte.",
|
||||
"Au bout de trois vies, c’est *Game Over* ! [L’examen, le rattrapage et la commission.]",
|
||||
"J’ai tout validé à 18. Sauf l’électromagnétisme, j’ai validé à 4.",
|
||||
"C’est parce que moi je vois les champs magnétiques, mais du coup je ne savais pas faire les démonstrations.",
|
||||
"Je me suis pointé en retard parce que je réveillais mon copiaule.",
|
||||
"Il y a plein de *Klein* autour de chez mes parents.",
|
||||
"Ils sont sérieux les Alsaciens !",
|
||||
"C’est un bon conducteur, mais il consomme plus que son véhicule.",
|
||||
"Et si jamais on pouvait mettre autre chose que des roues ?",
|
||||
"C’était une flaque de flotte, la Suisse : aquaplaning sur 300 bornes !",
|
||||
"Aujourd’hui, on fera des crêpes !",
|
||||
"Tiens, ça pourrait être mon repas de midi ça !",
|
||||
"Je mets de la farine, du lait puis des œufs… Ben je prépare des crêpes !",
|
||||
"On souhaite fabriquer un modem… pas le parti politique, hein !",
|
||||
"Schlumberger, ils font de la discrimination à l’envers : ils aiment beaucoup les étrangers et les femmes.",
|
||||
"Pensez autrement.",
|
||||
"Mon accent anglais, c’est comme le français, c’est approximatif.",
|
||||
"Comme le disait un de mes profs : \"Et surtout… Essayez de me suivre !\"",
|
||||
"Des fois… c’est dur la vie d’artiste.",
|
||||
"J’aime pas les pommes, je préfère les poires.",
|
||||
"Ce jour-là, j’étais en pétard. Contre le foot. [Enterrement pendant la victoire de la France à la coupe du monde de 1998.]",
|
||||
"Et donc, j’ai toujours un stylo sur moi.",
|
||||
"Vous connaissez la règle des trois \"pourquoi\" ? Pour avoir la vérité sur quelque chose, on pose la question, puis on demande trois fois \"pourquoi ?\"",
|
||||
"Vous risquez le décollement de la rétine.",
|
||||
"N’essayez pas de faire voir la télé couleur à une vache !",
|
||||
"Les bras m’en tombent.",
|
||||
"Vous savez comment on dit \"Il fait froid\" en japonais ? SAKAI !",
|
||||
"L’opérateur rouge c’est celui qui sait faire [SFR]. Mais aujourd’hui, il sait pas faire.",
|
||||
"Les appareils photos numériques changent beaucoup plus vite que les humains. La preuve, j'suis là mon premier appareil photo numérique il est plus là.",
|
||||
"Moi je suis vraiment sans mémoire.",
|
||||
"Les vendeurs d'oscillos ont peur de moi.",
|
||||
"Un filtre de Jean-Louis Gutzwiller, histoire de laisser mon nom à la postérité.",
|
||||
"Ma maman, elle n'est pas de ce monde-là.",
|
||||
"Et paf ! 3dB dans les dents !"
|
||||
]
|
||||
[match]
|
||||
[join]
|
33
etc/klafytg/bots.d/houzelle.toml
Normal file
33
etc/klafytg/bots.d/houzelle.toml
Normal file
|
@ -0,0 +1,33 @@
|
|||
[bot]
|
||||
name = "ZouZou"
|
||||
# Name of the environment variable to fetch
|
||||
token = "HOUZELLETOKEN"
|
||||
# time between interventions in seconds
|
||||
min_time = 1
|
||||
channels = [
|
||||
-311159479,
|
||||
-320933904,
|
||||
-45394299
|
||||
]
|
||||
admins = [
|
||||
452970435 # klafyvel
|
||||
]
|
||||
[ping]
|
||||
quotes = [
|
||||
"C'est très simple.",
|
||||
"C'est facile.",
|
||||
"Effectivement.",
|
||||
"Alors.",
|
||||
"Donc.",
|
||||
"Voilà.",
|
||||
"Ok ?",
|
||||
"Hein.",
|
||||
"D'accord ?",
|
||||
"Euh...",
|
||||
"Bon.",
|
||||
"Bref.",
|
||||
"D'accord ? Ok ? Voilà. Alors..."
|
||||
]
|
||||
[match]
|
||||
"aide" = "Alors, hum... C'est de l'autoformation."
|
||||
[join]
|
|
@ -5,7 +5,12 @@ token = "MANUTOKEN"
|
|||
# time between interventions in seconds
|
||||
min_time = 30
|
||||
channels = [
|
||||
-311159479
|
||||
-311159479,
|
||||
-320933904,
|
||||
-45394299
|
||||
]
|
||||
admins = [
|
||||
452970435 # klafyvel
|
||||
]
|
||||
[ping]
|
||||
quotes = [
|
||||
|
|
51
etc/klafytg/bots.d/patou.toml
Normal file
51
etc/klafytg/bots.d/patou.toml
Normal file
|
@ -0,0 +1,51 @@
|
|||
[bot]
|
||||
name = "sel"
|
||||
# Name of the environment variable to fetch
|
||||
token = "PATOUTOKEN"
|
||||
# time between interventions in seconds
|
||||
min_time = 30
|
||||
channels = [
|
||||
-311159479,
|
||||
-320933904,
|
||||
-45394299
|
||||
]
|
||||
admins = [
|
||||
452970435 # klafyvel
|
||||
]
|
||||
[ping]
|
||||
quotes = [
|
||||
"En parlant de ça, Centrale ne sait vraiment pas travailler en multicampus",
|
||||
"On avait ouvert une voie d'escalade sur une des façades de la résidence",
|
||||
"Je vous ai parlé de la fois où j'ai discuté avec Bill Gates ?",
|
||||
"Bosse plutôt que de me faire la conversation !",
|
||||
"On parle, on parle, mais le code il avance pas beaucoup",
|
||||
"Garantie 5 ans puis poubelle",
|
||||
"Ben non, c'est une idée de merde",
|
||||
"Oui, vas-y, fait comme tu veux",
|
||||
"Je suis généreux, mais toi ça va pas être facile de te trouver des points",
|
||||
"Attend un peu, il y a Konrad qui m'appelle. Qu'est-ce qu'il me veut encore celui-là ?",
|
||||
"Hein !?",
|
||||
"Faites du vpn sur l'ecole ou sur la rez depuis l'exterieur",
|
||||
"Je viens donc de supprimer les comptes et de détruire les boites mail",
|
||||
"Au fait, j'ai l'impression que vous avez limité ma vitesse de téléchargement, c'est un peu lent je trouve ... évitez de brider ma machine svp",
|
||||
"Renaud c'est un visionnaire, mais un visionnaire aveugle",
|
||||
"J'ai pas besoin de cirer des pompes ou sucer des bites. Ah je suis avec des élèves je te laisse",
|
||||
"Annie elle aurait bien aimé être à fond DANS John Cagnol",
|
||||
"Quand tu veux rouler vite et efficace, allongé c'est confortable",
|
||||
"J'aime bien Sexion d'assaut",
|
||||
"Si vous voulez pisser depuis le toit attendez que le directeur passe en-dessous",
|
||||
"Pour être handicapé mental, faut déjà avoir un cerveau",
|
||||
"Le prêtre a dit qu'il ne pouvait décemment pas prendre Gutzwiller : il est trop près de son Macintosh",
|
||||
"Il est très bon, mais il est très con",
|
||||
"On bute tout le monde et on recommence",
|
||||
"Je suis toujours un peu en avance de phase",
|
||||
"Stop. Tue toi.",
|
||||
"La mort par convention mutuelle si je puis dire",
|
||||
"Lâche moi la souris",
|
||||
"On a une commande qui est 'casse-toi tu pue' et un autre qui dit 'casse-toi tu pompes les ressources'"
|
||||
]
|
||||
[match]
|
||||
"password"="Ah facile pour avoir accès aux switches, id: root, mdp: switch"
|
||||
"nvidia"="Les cartes nvidia c'est de la merde"
|
||||
[join]
|
||||
quotes = []
|
|
@ -1,48 +0,0 @@
|
|||
[bot]
|
||||
name = "sel"
|
||||
# Name of the environment variable to fetch
|
||||
token = "SELTOKEN"
|
||||
# time between interventions in seconds
|
||||
min_time = 30
|
||||
channels = [
|
||||
-311159479
|
||||
]
|
||||
[ping]
|
||||
quotes = [
|
||||
"Arcas:`à viarezo ils font des caleçons.` Chibrac:`bah non au rezo, à viarezo ils ont pas de boules à couvrir`",
|
||||
"Les lentilles c'est extrêmement pratique de base pour toute personne active [wink-wink Chibrac, NDLR]",
|
||||
"proxima (ViaRézo):Pour ce qui est du reste, nous avons, je crois, bien compris votre demande ; mais nos impératifs actuels, surtout pour Rennes et Metz, impliquent de passer par notre école, qui est a priori assez frileuse vis-à-vis du Crans et de ses relations avec le CROUS; nous espérons donc pouvoir à terme nous rapprocher de la présentation que tu décris, mais cela impliquerait un travail en amont pour ne pas contrevenir à nos propres efforts, et nous souhaiterions donc que vous , ésentiez pas, pour l’instant, vos démarches comme une action commune avec ViaRézo.",
|
||||
"J'ai vraiment hâte de rencontrer les N1As de l'année prochaine.",
|
||||
"À Metz vous êtes vraiment des experts.",
|
||||
"Centrale Metz",
|
||||
"<Tipunchetrhum> Il faut vraiment être con pour acheter une imprimante Brother.",
|
||||
"<David_5-1> 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 ?",
|
||||
"<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.",
|
||||
"<S&M> 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",
|
||||
"<shaka> D'après le fameux théorème centralien je pense que j'ai droit donc j'ai le droit",
|
||||
"<shaka> dtf vous arriverez pas au niveau de via qui découvre tous les ans des thunes placées sur des comptes random",
|
||||
"<shaka> il faudrait faire un achivement : a réussi a désinstaller le virtualiseur du virtualiseur",
|
||||
"<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",
|
||||
"<shaka> je rajoute du gros sel façon ViaRézo \n<klafyvel> fais gaffe bientôt le steak va coder en node",
|
||||
"<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",
|
||||
"<Nanoy> Un JT c'est pas comme des nocturnes FedeRez, ça s'organise pas tout seul."
|
||||
]
|
||||
[match]
|
||||
"détruire le monde" = "Manu on fait des collages ?"
|
||||
"imprimante" = "Je pense qu'on devrait reprendre la même imprimante Brother."
|
||||
"{name}, pourquoi es-tu là ?" = "{user} : En l'an 2018, en plus d'être feignants, les Rézomen devinrent salés à cause de la fermeture du campus. C'est pourquoi un jeune Rézoman nommé Klafyvel m'a créé, afin d'avoir un salage automatique de {channel}. Depuis je hante le chan."
|
||||
"on peut te joindre sur irc et telegram ?" = "{user} : oui, sur telegram pour que mes amis iraniens profitent de ma science et sur irc en attendant que les barbus en manque de reconnaissance se mettent à la page. Je pense qu'on devrait ajouter un bridge matrix \U0001f914"
|
||||
"telegram" = "{user} : tu devrais passer à irc."
|
||||
"irc.*matrix" = "{user} : tu devrais passer à matrix."
|
||||
"matrix.*irc" = "> {message}\nLes vrais font tourner matrix dans un tmux."
|
||||
"proxmox" = "proxmox c'est surfait, faut l'autoremove"
|
||||
[join]
|
||||
quotes = ['Unleash the salt']
|
33
etc/klafytg/bots.d/sciamana.toml
Normal file
33
etc/klafytg/bots.d/sciamana.toml
Normal file
|
@ -0,0 +1,33 @@
|
|||
[bot]
|
||||
name = "Marc"
|
||||
# Name of the environment variable to fetch
|
||||
token = "MARCTOKEN"
|
||||
# time between interventions in seconds
|
||||
min_time = 3
|
||||
channels = [
|
||||
-311159479,
|
||||
-320933904,
|
||||
-45394299
|
||||
]
|
||||
admins = [
|
||||
452970435 # klafyvel
|
||||
]
|
||||
[ping]
|
||||
quotes = [
|
||||
"Ça me désole quand munme.",
|
||||
"Le monde va mal, vous savez. Faites HEC.",
|
||||
"C'est pipoland m'voyez.",
|
||||
"À Supélec, je ne sais pas comment ils fonctionnent.",
|
||||
"C'est pas un Belge qui va révolutionner les grandes écoles, chacun sa merde.",
|
||||
"Eh je suis pas un tueur. Enfin dans la vraie vie, si. D'ailleurs il y a eu un meurtre non élucidé près de chez moi, mais c'est pas moi.",
|
||||
"C'est comme votre latence matinale, moi j'arrive avec mon sin(t) et je vous secoue harmoniquement.",
|
||||
"Je vais essayer de vous aider, il va y avoir une sélection naturelle.",
|
||||
"Si quelqu'un fait une thèse, il a 3 points de plus à l'exam'.",
|
||||
"Si on me demande plus que le passé, je dis que le passé du passé c'est le passé.",
|
||||
"C'est mal foutu parce que ce n'est pas moi qui l'ai fait mais des gens de Paris.",
|
||||
"Marcher c'est compliqué.",
|
||||
"Vous savez, j'ai mis un temps fou à comprendre qu'on avait cours ici."
|
||||
]
|
||||
[match]
|
||||
"[Pp]hotonique" = "C'est la science du XXIIe siècle."
|
||||
[join]
|
|
@ -5,7 +5,12 @@ token = "SELTOKEN"
|
|||
# time between interventions in seconds
|
||||
min_time = 30
|
||||
channels = [
|
||||
-311159479
|
||||
-311159479,
|
||||
-320933904,
|
||||
-45394299
|
||||
]
|
||||
admins = [
|
||||
452970435 # klafyvel
|
||||
]
|
||||
[ping]
|
||||
quotes = [
|
||||
|
|
2225
klafirc.log
2225
klafirc.log
File diff suppressed because it is too large
Load diff
|
@ -8,8 +8,10 @@ import os
|
|||
import toml
|
||||
import telegram
|
||||
from telegram.ext import MessageHandler, Filters
|
||||
from telegram.ext import Updater
|
||||
from telegram.ext import Updater, Handler
|
||||
from telegram.ext import CommandHandler
|
||||
from telegram import InlineQueryResultArticle, InputTextMessageContent
|
||||
from telegram.ext import InlineQueryHandler
|
||||
|
||||
|
||||
class Bot:
|
||||
|
@ -22,6 +24,7 @@ class Bot:
|
|||
logging.info("Loading configuration from %s.", filename)
|
||||
self.config = toml.load(filename)
|
||||
self.name = self.config["bot"]['name']
|
||||
self.min_time = self.config["bot"]["min_time"]
|
||||
self.bot = telegram.Bot(os.environ[self.config["bot"]['token']])
|
||||
self.channels = {}
|
||||
self.reactions = {}
|
||||
|
@ -34,7 +37,7 @@ class Bot:
|
|||
self.add_ping(quote)
|
||||
|
||||
for channel in self.config["bot"]["channels"]:
|
||||
self.channels[channel] = datetime.datetime(1,1,1)
|
||||
self.channels[int(channel)] = datetime.datetime(1,1,1)
|
||||
|
||||
|
||||
self.updater = Updater(token=os.environ[self.config["bot"]["token"]], use_context=True)
|
||||
|
@ -43,6 +46,10 @@ class Bot:
|
|||
self.quote_handler = CommandHandler('ping', self.on_ping)
|
||||
self.match_handler = MessageHandler(Filters.text, self.on_message)
|
||||
self.dispatcher.add_handler(self.quote_handler)
|
||||
self.dispatcher.add_handler(self.match_handler)
|
||||
|
||||
def is_allowed(self, update, context):
|
||||
return update.effective_chat.id in self.channels
|
||||
|
||||
def start(self):
|
||||
self.updater.start_polling()
|
||||
|
@ -53,7 +60,31 @@ class Bot:
|
|||
def on_join(self):
|
||||
pass
|
||||
|
||||
def on_inline(self, update, context):
|
||||
if not self.is_allowed(update, context):
|
||||
return
|
||||
query = update.inline_query.query
|
||||
if not query:
|
||||
return
|
||||
results = list()
|
||||
results.append(
|
||||
InlineQueryResultArticle(
|
||||
id=query.upper(),
|
||||
title='Caps',
|
||||
input_message_content=InputTextMessageContent(query.upper())
|
||||
)
|
||||
)
|
||||
context.bot.answer_inline_query(update.inline_query.id, results)
|
||||
|
||||
|
||||
def on_ping(self, update, context):
|
||||
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.",
|
||||
reply_to_message_id=update.effective_message.message_id
|
||||
)
|
||||
return
|
||||
c = {
|
||||
"channel": update.effective_chat.title,
|
||||
"name": self.name,
|
||||
|
@ -68,12 +99,14 @@ class Bot:
|
|||
context.bot.send_message(chat_id=update.effective_chat.id, text=quote, reply_to_message_id=update.effective_message.message_id)
|
||||
|
||||
def on_message(self, update, context):
|
||||
if not self.is_allowed(update, context):
|
||||
return
|
||||
user = update.effective_user
|
||||
channel = update.effective_chat
|
||||
message = update.effective_message
|
||||
answer = self.get_reaction(user, channel, message)
|
||||
for ans in answer:
|
||||
context.bot.send_message(chat_id=update.effective_chat.id, text=ans)
|
||||
if answer:
|
||||
context.bot.send_message(chat_id=update.effective_chat.id, text=answer[0], reply_to_message_id=update.effective_message.message_id)
|
||||
|
||||
def add_reaction(self, match, reaction):
|
||||
"""Add a reaction to the bot.
|
||||
|
@ -131,7 +164,7 @@ class Bot:
|
|||
result = []
|
||||
logging.debug("Looking for reactions.")
|
||||
for m in self.reactions.keys():
|
||||
search = m.search(message.text)
|
||||
search = re.search(m.format(**context), message.text)
|
||||
if search:
|
||||
r = self.reactions[m]
|
||||
if callable(r):
|
||||
|
|
|
@ -13,7 +13,7 @@ else:
|
|||
logger = logging.getLogger()
|
||||
|
||||
if DEBUG:
|
||||
logger.setLevel(logging.DEBUG)
|
||||
logger.setLevel(logging.INFO)
|
||||
else:
|
||||
logger.setLevel(logging.INFO)
|
||||
|
||||
|
|
Loading…
Reference in a new issue