diff --git a/bot.py b/bot.py
index a99fbd420b34372e7a59c931db19f4cd68c6ab3e..c1d13c68b4ef5275ec6ea3d584fb1f183b3e9bc4 100755
--- a/bot.py
+++ b/bot.py
@@ -9,13 +9,14 @@ import usefull
 import random
 from auth_file import USERNAME, PASSWORD
 from googletrans import Translator
+import threading
 translator = Translator()
-quizzes = {}
-
 
 class Bot(Client):
     ahah_liste = ['ahah', 'mdr', 'lol', 'Mort de rire !', 'Trop marrant', 'tu m\'as tué', 'xD', 'PTDR']
     what_liste = ['wat', 'What', 'Nani', 'keske', 'dafuk', 'da fuk']
+    Bot.quizzes = {}
+    shitpostbot = {}
 
     def onMessage(self, author_id, message_object, thread_id, thread_type, **kwargs):
         self.markAsDelivered(thread_id, message_object.uid)
@@ -23,14 +24,22 @@ class Bot(Client):
 
         log.info("{} from {} in {}".format(message_object, thread_id, thread_type.name))
 
-        if 'Ah' in message_object.text:
-            self.sendLocalImage('images/ah.png', thread_id=thread_id, thread_type=thread_type)
-
         to_send = self.tests(message_object.text, thread_id=thread_id, thread_type=thread_type, author_id=author_id, channel=self.fetchThreadInfo(thread_id)[thread_id].name)
         if (author_id != self.uid or 'BOT :' not in message_object.text) and to_send is not None:
             self.send(Message('BOT :' + to_send), thread_id=thread_id, thread_type=thread_type)
 
+        self.trigger_double_mots(message_object.text, thread_id, thread_type)
+        Bot.shitpostbot5000()
+
+    @classmethod
+    def shitpostbot5000(self):
+        for chan in Bot.shitpostbot:
+            if Bot.shitpostbot[chan][0].get_status():
+                if Bot.shitpostbot[chan][0].get_latest():
+                    self.sendLocalImage(Bot.shitpostbot[chan][0].get_out(), thread_id=chan, thread_type=Bot.shitpostbot[chan][1])
+
     def tests(self, texte, thread_id, thread_type, author_id, channel=''):
+
         if texte == '!help':
             help_text = 'Ce que je sais faire :\n  \
             !meteo <ville> ; <pays> ; <dans_n_heure(facultatif)>\n \
@@ -50,6 +59,7 @@ class Bot(Client):
             !memes <image_name_or_url> ; <texte1> ; <texte2(facultatif)>  ... not yet implemented\n\
             !ping \n\
             !translate <phrase> ; <lang_source> ; <lang_dest>\n\
+            !shitpostbot5000 [status|on|off|random] ... ne pas utiliser PLEASE\n\
             !about -> vas-y test-moi !\n'
             return help_text
         elif '!translate' in texte:
@@ -79,9 +89,23 @@ class Bot(Client):
                 else:
                     return random.choice(['T\'es sur de ton coup là ?', 'chais pas qui c\'est...'])
 
+        # SHitpostbot5000
+        elif texte == '!shitpostbot5000 on':
+            if thread_id not in Bot.shitpostbot:
+                Bot.shitpostbot[thread_id] = [useless.Shitpostbot5000(), thread_type]
+            Bot.shitpostbot[thread_id][0].set_on()
+        elif texte == '!shitpostbot5000 status':
+            if thread_id not in Bot.shitpostbot:
+                return 'Ce truc n\'est pas activé et doit, à mon avis rester éteint...'
+            else:
+                return 'Eh oui, c\'est trop tard, le démon est déjà à l\'oeuvre' if Bot.shitpostbot[thread_id][0].get_status() else 'Le diable se repose...'
+        elif texte == '!shitpostbot5000 off':
+            if thread_id in Bot.shitpostbot:
+                Bot.shitpostbot[thread_id][0].set_off()
+        elif texte == '!shitpostbot5000 random':
+            self.sendLocalImage(Shitpostbot5000.random(), thread_id=thread_id, thread_type=thread_type)
+
         # pour rigoler
-        elif any(word.lower() in texte.lower() for word in Bot.what_liste):
-            return random.choice(Bot.what_liste)
         elif '!memes templates' in texte:
             return useless.Memes.get_templates()
         elif '!memes ' in texte:
@@ -100,8 +124,8 @@ class Bot(Client):
 
         elif any(word.lower() in texte.lower() for word in ["let\'s go", "c'est parti", "go ", "allons "]):
             return 'é zé bardi !'
-        elif any(word.lower() in texte.lower() for word in ['noice ', 'nice ']):
-            self.send(Message(text="👍", emoji_size=EmojiSize.LARGE), thread_id=thread_id, thread_type=thread_type)
+        elif any(word.lower() in texte.lower().split(' ') for word in ['noice', 'nice']):
+            self.sendEmoji(emoji="👍", size=EmojiSize.LARGE, thread_id=thread_id, thread_type=thread_type)
             # self.send(Message(emoji_size=EmojiSize.LARGE), thread_id=thread_id, thread_type=thread_type)
         elif '!kohlanta' in texte:
             texte = texte.replace('!kohlanta ', '')
@@ -110,42 +134,40 @@ class Bot(Client):
             return useless.pipo('useless/pipotron.txt')
         elif texte == '!ping':
             return 'Pong !'
-        elif any(word.lower() in texte.lower() for word in Bot.ahah_liste):
-            return random.choice(Bot.ahah_liste)
         elif texte == '!rateau':
             return useless.getRateau()
 
         # petit jeu de quizz
         elif '!quizz' in texte:
             if 'start' in texte:
-                if thread_id not in quizzes.keys():
-                    quizzes[thread_id] = useless.Quizz()
-                return quizzes[thread_id].start()
-            elif thread_id not in quizzes.keys():
+                if thread_id not in Bot.quizzes.keys():
+                    Bot.quizzes[thread_id] = useless.Quizz()
+                return Bot.quizzes[thread_id].start()
+            elif thread_id not in Bot.quizzes.keys():
                 return 'Perdu ! T\'as oublié de lancer une game looser'
             if 'new' in texte:
-                return quizzes[thread_id].new()
+                return Bot.quizzes[thread_id].new()
             if 'scoreboard' in texte:
                 if texte.replace('!quizz scoreboard ', '') != '':
-                    return quizzes[thread_id].scoreboard(texte.replace('!quizz scoreboard ', ''))
+                    return Bot.quizzes[thread_id].scoreboard(texte.replace('!quizz scoreboard ', ''))
                 else:
-                    return quizzes[thread_id].scoreboard()
+                    return Bot.quizzes[thread_id].scoreboard()
             if 'reset' in texte:
-                return quizzes[thread_id].reset()
+                return Bot.quizzes[thread_id].reset()
             if 'indice' in texte:
-                return quizzes[thread_id].indice()
+                return Bot.quizzes[thread_id].indice()
             if 'round' in texte:
-                return quizzes[thread_id].get_round()
+                return Bot.quizzes[thread_id].get_round()
             if 'question' in texte:
-                return quizzes[thread_id].get_question()
-        elif '!q ' in texte and thread_id in quizzes.keys():
+                return Bot.quizzes[thread_id].get_question()
+        elif '!q ' in texte and thread_id in Bot.quizzes.keys():
             personne = self.fetchUserInfo(author_id)[author_id].name
             print(personne)
-            return quizzes[thread_id].answer(texte.replace('!q ', ''), personne)
-        elif "!indice" in texte and thread_id in quizzes.keys():
-            return quizzes[thread_id].indice()
-        elif "!scoreboard" in texte and thread_id in quizzes.keys():
-            return quizzes[thread_id].scoreboard()
+            return Bot.quizzes[thread_id].answer(texte.replace('!q ', ''), personne)
+        elif "!indice" in texte and thread_id in Bot.quizzes.keys():
+            return Bot.quizzes[thread_id].indice()
+        elif "!scoreboard" in texte and thread_id in Bot.quizzes.keys():
+            return Bot.quizzes[thread_id].scoreboard()
 
         # meteo
         elif '!meteo' in texte:
@@ -170,10 +192,39 @@ class Bot(Client):
                 return usefull.maps(texte.replace('!maps ', ''))
             except:
                 return 'Houston, on a un problème...'
-        elif texte == '!about':
+        elif texte == '!about' or texte == '!cyborg':
             return 'Hello, je suis A.N.U.B.I.S. A Not Usefull But Intelligent System, créé par le talentueux LawiK aka Wikle aka Cyborg aka Loïc Dub que je vénère !'
+
+        # les triggers en tout genre
+        elif 'Ah' in texte:
+            self.sendLocalImage('images/ah.png', thread_id=thread_id, thread_type=thread_type)
+        elif any(word.lower() in texte.lower() for word in Bot.ahah_liste):
+            return random.choice(Bot.ahah_liste)
+        elif any(word.lower() in texte.lower() for word in Bot.what_liste):
+            return random.choice(Bot.what_liste)
+
+        # doit rester à la fin des elif
+        elif '!' in texte and not any(word in texte for word in [' ! ', '! ', ' !']):
+            return 'Gné ?'
+
         return None
 
+    def trigger_double_mots(self, texte, thread_id, thread_type):
+        # genre coucou coucou donnera : Oh, coucoucou c'est marrant ça... et faire faire donnera faifaire
+        texte = texte.split(' ')
+        indice = len(texte)
+        voyelles = ['a', 'e', 'i', 'o', 'u', 'y']
+        for i in range(len(texte) - 1):
+            if texte[i] == texte[i + 1]:
+                for v in voyelles:
+                    if texte[i].find(v) != -1:
+                        indice = min(texte[i].find(v), indice)
+                if texte[i][indice] in voyelles:
+                    indice += 1
+                mot = texte[i][:indice + 1] + texte[i]
+                self.sendMessage(message="Oh, {} c'est marrant ça...".format(mot), thread_id=thread_id, thread_type=thread_type)
+                return None
+
 
 if __name__ == '__main__':
 
diff --git a/shitpostbot5k_latest.jpg b/shitpostbot5k_latest.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..85a5246aca2a59a33b4ebdde90929414dc6b771c
Binary files /dev/null and b/shitpostbot5k_latest.jpg differ
diff --git a/useless/__init__.py b/useless/__init__.py
index c87179628d79daad8a6e757173bc88025ca63e9e..0fddb37eb67477765122d3f2571214b7ee6b1465 100644
--- a/useless/__init__.py
+++ b/useless/__init__.py
@@ -9,4 +9,5 @@ from .pipotron import pipo
 from .haddock import haddock
 from .quizz import Quizz
 from .kohlanta import *
-from .memes import Memes
\ No newline at end of file
+from .memes import Memes
+from .shitpostbot5k import *
\ No newline at end of file
diff --git a/useless/shitpostbot5k.py b/useless/shitpostbot5k.py
new file mode 100755
index 0000000000000000000000000000000000000000..5236ef87a73f57c7e9395a17279dc955eba89938
--- /dev/null
+++ b/useless/shitpostbot5k.py
@@ -0,0 +1,52 @@
+#!/usr/bin/python3
+from urllib.request import urlopen
+from bs4 import BeautifulSoup
+import re
+import urllib.request
+import datetime
+
+
+class Shitpostbot5000(object):
+    def __init__(self, out="shitpostbot5k_latest.jpg"):
+        self.state = False
+        self.image = ''
+        self.date = datetime.datetime.now()
+        self.out = out
+
+    def get_latest(self):
+        if datetime.datetime.now() > self.date + datetime.timedelta(minutes=30):
+            html = urlopen('https://www.facebook.com/shitpostbot5k/feed')
+            bs = BeautifulSoup(html, 'html.parser')
+            image = bs.find_all('img', {'src': re.compile('.jpg')})[-1]['src']
+            if image != self.image:
+                urllib.request.urlretrieve(image, self.out)
+                self.image = image
+                self.date = datetime.datetime.now()
+                return True  # new one !
+        return False  # nothing new
+
+    def get_status(self):
+        return self.state
+
+    def set_on(self):
+        self.state = True
+
+    def set_off(self):
+        self.state = False
+
+    def get_out(self):
+        return self.out
+
+    @classmethod
+    def random(self):
+        html = urlopen('https://www.facebook.com/pg/shitpostbot5k/photos')
+        bs = BeautifulSoup(html, 'html.parser')
+        images = bs.find_all('img', {'src': re.compile('.jpg')})
+        images2 = bs.find_all('image_src')
+        for image in images:
+            print(image["src"])
+        return None
+
+if __name__ == "__main__":
+    img = Shitpostbot5000()
+    print(img.get_latest())