diff --git a/CHANGELOG.md b/CHANGELOG.md
index 88e1417258e38598b9a4c8a2bffa1d5920d3b460..960ef442a2454c7bf1c194dcd9dc9c5c18a7d729 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,7 @@
 ## 19 aout 2019
 **Ajout:**
 - script bot.py quasi complet
+- quizz marche
 
 ---
 
diff --git a/bot.py b/bot.py
index 5db21b0af3c424e785fc5f1504c89117780ce86b..765dc45e0ccb5d2e844c4d88089751f520bd3429 100755
--- a/bot.py
+++ b/bot.py
@@ -8,10 +8,14 @@ import useless
 import usefull
 import random
 from auth_file import USERNAME, PASSWORD
+from googletrans import Translator
+translator = Translator()
+quizz = useless.Quizz()
 
 
 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']
 
     def onMessage(self, author_id, message_object, thread_id, thread_type, **kwargs):
         self.markAsDelivered(thread_id, message_object.uid)
@@ -22,12 +26,12 @@ class Bot(Client):
         if 'Ah' in message_object.text:
             self.sendLocalImage('images/ah.png', thread_id=thread_id, thread_type=thread_type)
 
-        to_send = Bot.tests(message_object.text, self.fetchThreadInfo(thread_id)[thread_id].name)
+        to_send = Bot.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)
 
     @classmethod
-    def tests(self, texte, channel=''):
+    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 \
@@ -35,16 +39,26 @@ class Bot(Client):
             !useless \n \
             !chuck \n\
             !nordpress \n \
-            !quizz [start|new|reset|scoreboard] , not yet implemented\n \
+            !quizz [start|new|reset|scoreboard|indice|round|question] ... not yet implemented\n \
+            !q <reponse> pour répondre au quizz\n\
             !haddock \n \
             !philo \n \
             !pipo\n \
+            !rename <personne> ; <pseudo> \n\
             !kohlanta <nom>\n \
             !rateau \n \
-            !maps <nom_du_lieu> <destination(facultatif)>, not yet fully fonctionnal\n \
+            !maps <nom_du_lieu> <destination(facultatif)> ... not yet fully fonctionnal\n \
+            !memes <image_name_or_url> ; <texte1> ; <texte2(facultatif)>  ... not yet implemented\n\
             !ping \n\
+            !translate <phrase> ; <lang_source> ; <lang_dest>\n\
             !about -> vas-y test-moi !\n'
             return help_text
+        if '!translate' in texte:
+            texte = texte.replace('!translate ', '').split(' ; ')
+            try:
+                translator.translate(text=texte[0], dest=texte[2], src=texte[1])
+            except:
+                return 'Tiens j\'y arrive pas, Apparement, ça ne marche pas comme ça.'
         if texte == '!useless':
             return useless.useless()
         if texte == '!nordpress':
@@ -55,6 +69,24 @@ class Bot(Client):
             return useless.genererSujet()
         if texte == '!haddock':
             return useless.haddock()
+        if '!rename' in texte:
+            texte = texte.replace('!rename ', '').split(';')
+            for user in self.fetchAllUsersFromThreads([thread_id]):
+                if user.name == texte[0]:
+                    self.changeNickname(nickname=texte[1], user_id=user.uid, thread_id=thread_id, thread_type=thread_type)
+                else:
+                    return random.choice(['T\'es sur de ton coup là ?', 'chais pas qui c\'est...'])
+        if any(word.lower() in texte.lower() for word in Bot.what_liste):
+            return random.choice(Bot.what_liste)
+        if '!memes ' in texte:
+            texte = texte.replace('!memes ', '').split(' ; ')
+            useless.memes(texte)
+            self.sendLocalImage('meme.png', thread_id=thread_id, thread_type=thread_type)
+        if any(word.lower() in texte.lower() for word in ["let\'s go", "c'est parti", "go ", "allons "]):
+            return 'é zé bardi !'
+        if any(word.lower() in texte.lower() for word in ['noice ', 'nice ', 'ok']):
+            # self.send(Message(text="👍", 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)
         if '!kohlanta' in texte:
             texte = texte.replace('!kohlanta ', '')
             return useless.kohlanta(texte, channel)
@@ -66,15 +98,41 @@ class Bot(Client):
             return random.choice(Bot.ahah_liste)
         if texte == '!rateau':
             return useless.getRateau()
+
+        # petit jeu de quizz
+        if '!quizz' in texte:
+            if 'start' in texte:
+                return quizz.start()
+            if 'new' in texte:
+                return quizz.new()
+            if 'scoreboard' in texte:
+                if texte.replace('!quizz scoreboard ', '') != '':
+                    return quizz.scoreboard(texte.replace('!quizz scoreboard ', ''))
+                else:
+                    return quizz.scoreboard()
+            if 'reset' in texte:
+                return quizz.reset()
+            if 'indice' in quizz:
+                return quizz.indice()
+            if 'round' in texte:
+                return quizz.get_round()
+            if 'question' in texte:
+                return quizz.get_question()
+        if '!q ' in texte:
+            return quizz.answer(text.replace('!q ', ''), self.fetchUserInfo(author_id)[author_id].name)
+
+        # meteo
         if '!meteo' in texte:
             try:
                 texte = texte.replace('!meteo ', '').split(' ; ')
                 if len(texte) == 2:
                     return usefull.meteo_de(texte[0], texte[1])
                 else:
-                    return usefull.meteo_de(texte[0], texte[1], dans_n_heures=texte[2])
+                    return usefull.meteo_de(texte[0], texte[1], dans_n_heures=int(texte[2]))
             except:
                 return 'Ousp, c\'est cassé...'
+
+        # wikipédia
         if '!wikipedia' in texte:
             try:
                 texte = texte.replace('!wikipedia ', '')
diff --git a/images/memes_images/10guy.jpg b/images/memes_images/10guy.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..bf6f75bb11b9aa35d35be0e731938d55c236d12b
Binary files /dev/null and b/images/memes_images/10guy.jpg differ
diff --git a/images/memes_images/avengers.jpg b/images/memes_images/avengers.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..c667c8faf2464a0a7efd302c43bb802889df58ea
Binary files /dev/null and b/images/memes_images/avengers.jpg differ
diff --git a/images/memes_images/badsurprise.jpg b/images/memes_images/badsurprise.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..5e5cc0a888490de7628c4bd607e463c7873a1df2
Binary files /dev/null and b/images/memes_images/badsurprise.jpg differ
diff --git a/images/memes_images/boyfriend.jpg b/images/memes_images/boyfriend.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..8c125b2e41655219a79fdcfc2afe73b436ed8472
Binary files /dev/null and b/images/memes_images/boyfriend.jpg differ
diff --git a/images/memes_images/depressing.jpg b/images/memes_images/depressing.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..a6d0932bfdfaf33e4bda99f9449a011d0d46ec62
Binary files /dev/null and b/images/memes_images/depressing.jpg differ
diff --git a/images/memes_images/euh.jpg b/images/memes_images/euh.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..4f873426c9f8142d106a8c7f05e8c3fdeb8f3375
Binary files /dev/null and b/images/memes_images/euh.jpg differ
diff --git a/images/memes_images/gangbang.jpg b/images/memes_images/gangbang.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..6ca91aeb463770d40019c76d2e0a24f45bfd331b
Binary files /dev/null and b/images/memes_images/gangbang.jpg differ
diff --git a/images/memes_images/godblessings.jpg b/images/memes_images/godblessings.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..bc24ee58183324a3d873498456f8ae046020adfa
Binary files /dev/null and b/images/memes_images/godblessings.jpg differ
diff --git a/images/memes_images/goodchoice.jpg b/images/memes_images/goodchoice.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..8e8e00f75e3d53fa0b47d5811ffc3f572d715d9c
Binary files /dev/null and b/images/memes_images/goodchoice.jpg differ
diff --git a/images/memes_images/homer.jpg b/images/memes_images/homer.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9ebf0269168009b10051b8de10c0b2b9456d2c19
Binary files /dev/null and b/images/memes_images/homer.jpg differ
diff --git a/images/memes_images/killyou.jpg b/images/memes_images/killyou.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..84dedcdc99490f398edd4d8a4e098bae05604d82
Binary files /dev/null and b/images/memes_images/killyou.jpg differ
diff --git a/images/memes_images/maths.jpg b/images/memes_images/maths.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..cde6330a4dfce18659cd5ab2f8177680e033ac84
Binary files /dev/null and b/images/memes_images/maths.jpg differ
diff --git a/images/memes_images/mdr.jpg b/images/memes_images/mdr.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..49a074cdc3ee8a5ae077117ed8ab593cb295c148
Binary files /dev/null and b/images/memes_images/mdr.jpg differ
diff --git a/images/memes_images/nanithfuck.jpg b/images/memes_images/nanithfuck.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..94f565153f9ecf30f0ecdfa7f134031c52987d76
Binary files /dev/null and b/images/memes_images/nanithfuck.jpg differ
diff --git a/images/memes_images/ohlala.jpg b/images/memes_images/ohlala.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..bc24eb71e29e3a3d80f1762132f8b629c69c0014
Binary files /dev/null and b/images/memes_images/ohlala.jpg differ
diff --git a/images/memes_images/ohlala2.jpg b/images/memes_images/ohlala2.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..3b4c250841ae22ee25a143841bfd5219a7af52a5
Binary files /dev/null and b/images/memes_images/ohlala2.jpg differ
diff --git a/images/memes_images/on_the_side/badsurprise.jpg b/images/memes_images/on_the_side/badsurprise.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..21d5e9a910b6c797765762c826b75637e8ddef2b
Binary files /dev/null and b/images/memes_images/on_the_side/badsurprise.jpg differ
diff --git a/images/memes_images/on_the_side/goodchoice.jpg b/images/memes_images/on_the_side/goodchoice.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..a7217d8b72bd84ea9a779276337d465f0861103e
Binary files /dev/null and b/images/memes_images/on_the_side/goodchoice.jpg differ
diff --git a/images/memes_images/on_the_side/nanithfuck.jpg b/images/memes_images/on_the_side/nanithfuck.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..39cf29c77cc1ce9da99cc5ac78bcd287a0777f4b
Binary files /dev/null and b/images/memes_images/on_the_side/nanithfuck.jpg differ
diff --git a/images/memes_images/salt.jpg b/images/memes_images/salt.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..170e6435f0dcbc0cd32b88d30a5139083d2cce48
Binary files /dev/null and b/images/memes_images/salt.jpg differ
diff --git a/images/memes_images/smart.jpg b/images/memes_images/smart.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..02b43770cd8ca09ec99ab850644025d86f296c87
Binary files /dev/null and b/images/memes_images/smart.jpg differ
diff --git a/images/memes_images/specials/avengers.jpg b/images/memes_images/specials/avengers.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..c667c8faf2464a0a7efd302c43bb802889df58ea
Binary files /dev/null and b/images/memes_images/specials/avengers.jpg differ
diff --git a/images/memes_images/specials/boyfriend.jpg b/images/memes_images/specials/boyfriend.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..8c125b2e41655219a79fdcfc2afe73b436ed8472
Binary files /dev/null and b/images/memes_images/specials/boyfriend.jpg differ
diff --git a/images/memes_images/specials/godblessings.jpg b/images/memes_images/specials/godblessings.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..bc24ee58183324a3d873498456f8ae046020adfa
Binary files /dev/null and b/images/memes_images/specials/godblessings.jpg differ
diff --git a/images/memes_images/specials/homer.jpg b/images/memes_images/specials/homer.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9ebf0269168009b10051b8de10c0b2b9456d2c19
Binary files /dev/null and b/images/memes_images/specials/homer.jpg differ
diff --git a/images/memes_images/specials/thanos.jpg b/images/memes_images/specials/thanos.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..260d5c96fa615f132f3534dee276e1075495d2eb
Binary files /dev/null and b/images/memes_images/specials/thanos.jpg differ
diff --git a/images/memes_images/specials/trash.jpg b/images/memes_images/specials/trash.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e548c9bc27db40a7c1e9b6e0a8c67d2edd8ac17e
Binary files /dev/null and b/images/memes_images/specials/trash.jpg differ
diff --git a/images/memes_images/specials/whatisthis.png b/images/memes_images/specials/whatisthis.png
new file mode 100644
index 0000000000000000000000000000000000000000..b22a10a8ab6cd0d69e95fe94335feec99e27be96
Binary files /dev/null and b/images/memes_images/specials/whatisthis.png differ
diff --git a/images/memes_images/speechless.jpg b/images/memes_images/speechless.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..8a34c77f018ed98efa475adef89283ff102e4d34
Binary files /dev/null and b/images/memes_images/speechless.jpg differ
diff --git a/images/memes_images/suicide.jpg b/images/memes_images/suicide.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..53b0b39950d54f3088c097d8a3b6880ea28d1c19
Binary files /dev/null and b/images/memes_images/suicide.jpg differ
diff --git a/images/memes_images/suprised.jpg b/images/memes_images/suprised.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..58ea33aec1d7f82833ceba080cabccecea8c545f
Binary files /dev/null and b/images/memes_images/suprised.jpg differ
diff --git a/images/memes_images/thanos.jpg b/images/memes_images/thanos.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..260d5c96fa615f132f3534dee276e1075495d2eb
Binary files /dev/null and b/images/memes_images/thanos.jpg differ
diff --git a/images/memes_images/thisisfine.jpg b/images/memes_images/thisisfine.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..4a86806a3f0203620bd197ea524da1653064f6c5
Binary files /dev/null and b/images/memes_images/thisisfine.jpg differ
diff --git a/images/memes_images/thisisnotfine.jpg b/images/memes_images/thisisnotfine.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..586580763aa2cb864f5e390ead1a2e4f489d7799
Binary files /dev/null and b/images/memes_images/thisisnotfine.jpg differ
diff --git a/images/memes_images/trash.jpg b/images/memes_images/trash.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e548c9bc27db40a7c1e9b6e0a8c67d2edd8ac17e
Binary files /dev/null and b/images/memes_images/trash.jpg differ
diff --git a/images/memes_images/whatisthis.png b/images/memes_images/whatisthis.png
new file mode 100644
index 0000000000000000000000000000000000000000..b22a10a8ab6cd0d69e95fe94335feec99e27be96
Binary files /dev/null and b/images/memes_images/whatisthis.png differ
diff --git a/useless/memes.py b/useless/memes.py
new file mode 100644
index 0000000000000000000000000000000000000000..eda359858faddea1159d46c4bf1c590618f58a6a
--- /dev/null
+++ b/useless/memes.py
@@ -0,0 +1,74 @@
+#!/usr/bin/python3
+# module qui fait des memes
+# -*- coding: utf-8 -*-
+import PIL
+from PIL import ImageFont
+from PIL import Image
+from PIL import ImageDraw
+
+
+class Memes(object):
+    images = {
+        "10guy": ["10guy.jpg"],
+        "euh": ["images/euh.jpg"],
+        "gangbang": ["gangbang.jpg"],
+        "killyou": ["killyou.jpg"],
+        "maths": ["maths.jpg"],
+        "mdr": ["mdr.jpg"],
+        "ohlala": ["ohlala.jpg"],
+        "ohlala2": ["ohlala2.jpg"],
+        "salt": ["salt.jpg"],
+        "smart": ["smart.jpg"],
+        "speechless": ["speechless.jpg"],
+        "suicide": ["suicide.jpg"],
+        "surprised": ["suprised.jpg"],
+        "goodchoice": ["goodchoice.jpg"],
+        "nanithefuck": ["nanithefuck.jpg"],
+        "badsurprise": ["badsurprise.jpg"],
+        "boyfriend": ["boyfriend.jpg"],
+        "thisisfine": ["thisisfine.jpg"],
+        "thisisnotfine": ["thisisnotfine.jpg"],
+        "depressing": ["depressing.jpg"],
+        "avengers": ["avengers.jpg"],
+        "godblessing": ["godblessings.jpg"],
+        "homer": ["homer.jpg"],
+        "thanos": ["thanos.jpg"],
+        "trash": ["trash.jpg"],
+        "whatisthis": ["whatisthis.png"]
+    }
+
+    def __init__(self, name, text1, text2='', rep='images/memes_images/'):
+        self.name = name
+        self.text1 = text1
+        self.text2 = text2
+
+    @staticmethod
+    def ecrire(draw, text, font, pos):
+        x, y = pos
+        for adj in range(3):
+            # move right
+            draw.text((x - adj, y), text, font=font, fill="black")
+            # move left
+            draw.text((x + adj, y), text, font=font, fill="black")
+            # move up
+            draw.text((x, y + adj), text, font=font, fill="black")
+            # move down
+            draw.text((x, y - adj), text, font=font, fill="black")
+            # diagnal left up
+            draw.text((x - adj, y + adj), text, font=font, fill="black")
+            # diagnal right up
+            draw.text((x + adj, y + adj), text, font=font, fill="black")
+            # diagnal left down
+            draw.text((x - adj, y - adj), text, font=font, fill="black")
+            # diagnal right down
+            draw.text((x + adj, y - adj), text, font=font, fill="black")
+
+        # create normal text on image
+        draw.text(pos, text, fill="white", font=font)
+
+    def get_image(self):
+        pass
+
+if __name__ == '__main__':
+    meme1 = Memes(smart, 'test1', 'test2')
+    img = meme1.get_image()
diff --git a/useless/quizz.py b/useless/quizz.py
index 5d9fdf81cf9713007a1093485fba292c671791af..5a88fe40af7233672beffcdf22bab54b96375fc4 100755
--- a/useless/quizz.py
+++ b/useless/quizz.py
@@ -7,6 +7,7 @@ import requests
 
 from random import shuffle
 from googletrans import Translator
+import random
 translator = Translator()
 
 
@@ -50,10 +51,12 @@ class Quizz(object):
         return self._quizz['question']
 
     def start(self):
-        assert self._status == 0
         if self._status == 0:
             self._status = 1
             self._round = 1
+            return random.choice(['Que la partie commence !', 'é zé bardi !']) + '\n' + self.get_question()
+        else:
+            return "Mais t'es trizo ou quoi ya déjà une partie qui tourne là !"
 
     def get_round(self):
         return self._round
@@ -77,7 +80,7 @@ class Quizz(object):
             return self.reset()
         if proposition == '!question':
             return self.get_question()
-        if proposition == self._quizz['reponse']:
+        if proposition.lower() == self._quizz['reponse'].lower() or (self._quizz['reponse'] == 'True' and 'vrai' in proposition.lower()) or (self._quizz['reponse'] == 'False' and 'faux' in proposition.lower()):
             if personne in self._essais.keys():
                 self._essais[personne] += 1
             else:
@@ -110,6 +113,8 @@ class Quizz(object):
         self._essais = {}
         self._points = {}
         self._round = 0
+        return 'Et on recommence tout !'
+
 
 
 if __name__ == "__main__":