upate
This commit is contained in:
Binary file not shown.
Binary file not shown.
+48
-15
@@ -419,27 +419,36 @@ class TwitchChatBot:
|
||||
self.channel = channel.lower()
|
||||
self.messages: List[ChatMessage] = []
|
||||
self.uri = "wss://irc-ws.chat.twitch.tv:443"
|
||||
self.is_running = True
|
||||
self.script_name = "TwitchChat"
|
||||
self.chat_thread = None
|
||||
self.loop = None
|
||||
|
||||
def get_last_message(self) -> Optional[ChatMessage]:
|
||||
return self.messages[-1] if self.messages else None
|
||||
|
||||
def get_all_messages(self) -> List[ChatMessage]:
|
||||
return self.messages
|
||||
def stop(self):
|
||||
sprint(self.script_name, "red", f"Arrêt de la connexion au chat")
|
||||
self.is_running = False
|
||||
if self.loop and self.loop.is_running():
|
||||
self.loop.call_soon_threadsafe(self.loop.stop)
|
||||
if self.chat_thread and self.chat_thread.is_alive():
|
||||
self.chat_thread.join(timeout=2) # Attendre max 2 secondes
|
||||
sprint(self.script_name, "red", "Connexion au chat arrêtée.")
|
||||
else:
|
||||
sprint(self.script_name, "yellow", f"Connexion au chat déjà arrêtée")
|
||||
|
||||
async def connect_to_twitch_chat(self):
|
||||
while self.is_running:
|
||||
try:
|
||||
async with websockets.connect(self.uri) as websocket:
|
||||
# Se connecter en tant qu'utilisateur anonyme
|
||||
await websocket.send("CAP REQ :twitch.tv/tags twitch.tv/commands")
|
||||
await websocket.send(f"NICK justinfan{random.randint(10000,99999)}")
|
||||
await websocket.send(f"JOIN #{self.channel}")
|
||||
|
||||
print(f"✅ Connecté au chat de #{self.channel}")
|
||||
sprint(self.script_name, "green", f"Connecté au chat de #{self.channel}")
|
||||
|
||||
while True:
|
||||
while self.is_running:
|
||||
try:
|
||||
message = await websocket.recv()
|
||||
if "PRIVMSG" in message:
|
||||
# Extraction des données du message
|
||||
user = message.split("!", 1)[0][1:]
|
||||
if "display-name=" in user:
|
||||
user = user.split("display-name=")[1].split(";")[0]
|
||||
@@ -449,21 +458,45 @@ class TwitchChatBot:
|
||||
msg = message.split("PRIVMSG", 1)[1].split(":", 1)[1]
|
||||
timestamp = datetime.now()
|
||||
|
||||
# Création et stockage du message
|
||||
chat_message = ChatMessage(timestamp=timestamp, username=user, content=msg)
|
||||
self.messages.append(chat_message)
|
||||
|
||||
# Affichage formaté
|
||||
time_str = timestamp.strftime("%H:%M:%S.%f")[:-3]
|
||||
print(f"[\033[95m{time_str}\033[0m] \033[94m{user}\033[0m: \033[92m{msg}\033[0m")
|
||||
sprint(self.script_name, "magenta", f"[{time_str}] {user}: {msg}")
|
||||
|
||||
except websockets.exceptions.ConnectionClosed:
|
||||
print("\033[91m⚠️ Connexion fermée, reconnexion en cours...\033[0m")
|
||||
sprint(self.script_name, "yellow", "⚠️ Connexion fermée, tentative de reconnexion...")
|
||||
break
|
||||
|
||||
def start(self):
|
||||
asyncio.run(self.connect_to_twitch_chat())
|
||||
except Exception as e:
|
||||
sprint(self.script_name, "red", f"Erreur de connexion: {str(e)}")
|
||||
if self.is_running:
|
||||
await asyncio.sleep(5)
|
||||
|
||||
def run_chat_loop(self):
|
||||
try:
|
||||
self.loop = asyncio.new_event_loop()
|
||||
asyncio.set_event_loop(self.loop)
|
||||
self.loop.run_until_complete(self.connect_to_twitch_chat())
|
||||
except Exception as e:
|
||||
if self.is_running: # Ignorer les erreurs pendant l'arrêt
|
||||
sprint(self.script_name, "red", f"Erreur dans la boucle du chat: {str(e)}")
|
||||
finally:
|
||||
try:
|
||||
if self.loop and self.loop.is_running():
|
||||
self.loop.close()
|
||||
except:
|
||||
pass
|
||||
|
||||
def start_background(self):
|
||||
"""Lance la connexion au chat dans un thread séparé"""
|
||||
self.is_running = True
|
||||
self.chat_thread = threading.Thread(target=self.run_chat_loop)
|
||||
self.chat_thread.daemon = True
|
||||
self.chat_thread.start()
|
||||
|
||||
self.chat_thread = threading.Thread(target=self.main_loop)
|
||||
self.chat_thread.start() # Démarre dans un thread séparé
|
||||
|
||||
|
||||
|
||||
|
||||
+11
-11
@@ -192,20 +192,20 @@ if __name__ == '__main__':
|
||||
recordTw.main()
|
||||
|
||||
#lancement d'enregistrement chat du stream
|
||||
hprint("blue", "start loop TwitchChatBot")
|
||||
bot = TwitchChatBot(args.twitchname)
|
||||
bot.start()
|
||||
# hprint("blue", "start loop TwitchChatBot")
|
||||
# bot = TwitchChatBot(args.twitchname)
|
||||
# bot.start_background()
|
||||
|
||||
# hprint("blue", "start loop Subtitle_translation")
|
||||
# sb_translation = Subtitle_translation("../config/config.json")
|
||||
# sb_translation.start_main_loop()
|
||||
hprint("blue", "start loop Subtitle_translation")
|
||||
sb_translation = Subtitle_translation("../config/config.json")
|
||||
sb_translation.start_main_loop()
|
||||
|
||||
# hprint("blue", "start loop IA_generator")
|
||||
# ask_text = IA_generator("../config/config.json")
|
||||
# ask_text.start_main_loop()
|
||||
hprint("blue", "start loop IA_generator")
|
||||
ask_text = IA_generator("../config/config.json")
|
||||
ask_text.start_main_loop()
|
||||
|
||||
# controluser = messageTwitch("../config/user.json",args.twitchname)
|
||||
# controluser.start_loop_respond()
|
||||
controluser = messageTwitch("../config/user.json",args.twitchname)
|
||||
controluser.start_loop_respond()
|
||||
|
||||
print_help()
|
||||
listener_thread = threading.Thread(target=start_keyboard_listener)
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
{"text": " Brian, on peut en reparler dans une minute ? ...de le faire. En pla\u00e7ant les balises \u00e9lectroniques sur la voiture, il faut simplement acc\u00e9der au v\u00e9hicule, faire sauter le r\u00e9servoir... ...Fischer avait mis un autocollant sur le pare-choc arri\u00e8re de sa voiture et quelqu'un est venu recoller exactement le m\u00eame autocollant sur celui d\u00e9j\u00e0 existant, donc je crois que c'est l\u00e0 que la balise a mis un autocollant sur le pare-choc arri\u00e8re de sa voiture et quelqu'un est venu recoller exactement le m\u00eame autocollant sur celui d\u00e9j\u00e0 existant, donc je crois que c'est l\u00e0 que la balise a mis un autocollant sur le pare-choc arri\u00e8re de sa voiture.", "segments": [{"id": 0, "seek": 0, "start": 0.88, "end": 3.0, "text": " Brian, on peut en reparler dans une minute ?", "tokens": [50409, 10765, 11, 322, 5977, 465, 33291, 1918, 2680, 2251, 3456, 2506, 50515], "temperature": 0.0, "avg_logprob": -0.1896892874581473, "compression_ratio": 2.3423076923076924, "no_speech_prob": 0.25903812050819397}, {"id": 1, "seek": 0, "start": 3.0, "end": 5.38, "text": " ...de le faire. En pla\u00e7ant les balises \u00e9lectroniques sur la voiture,", "tokens": [50515, 1097, 1479, 476, 4865, 13, 2193, 15256, 1138, 394, 1512, 3119, 3598, 30996, 2044, 4911, 1022, 635, 38859, 11, 50634], "temperature": 0.0, "avg_logprob": -0.1896892874581473, "compression_ratio": 2.3423076923076924, "no_speech_prob": 0.25903812050819397}, {"id": 2, "seek": 0, "start": 5.7, "end": 8.0, "text": " il faut simplement acc\u00e9der au v\u00e9hicule, faire sauter le r\u00e9servoir...", "tokens": [50650, 1930, 8487, 24208, 1317, 526, 1068, 1609, 49438, 2271, 11, 4865, 601, 20314, 476, 14415, 1978, 9043, 485, 50765], "temperature": 0.0, "avg_logprob": -0.1896892874581473, "compression_ratio": 2.3423076923076924, "no_speech_prob": 0.25903812050819397}, {"id": 3, "seek": 0, "start": 8.52, "end": 11.48, "text": " ...Fischer avait mis un autocollant sur le pare-choc arri\u00e8re de sa voiture", "tokens": [50791, 1097, 37, 19674, 11853, 3346, 517, 45833, 1833, 394, 1022, 476, 7448, 12, 339, 905, 3399, 4212, 368, 601, 38859, 50939], "temperature": 0.0, "avg_logprob": -0.1896892874581473, "compression_ratio": 2.3423076923076924, "no_speech_prob": 0.25903812050819397}, {"id": 4, "seek": 0, "start": 11.48, "end": 14.42, "text": " et quelqu'un est venu recoller exactement le m\u00eame autocollant", "tokens": [50939, 1030, 25283, 6, 409, 871, 6138, 84, 39495, 260, 38111, 476, 5698, 45833, 1833, 394, 51086], "temperature": 0.0, "avg_logprob": -0.1896892874581473, "compression_ratio": 2.3423076923076924, "no_speech_prob": 0.25903812050819397}, {"id": 5, "seek": 0, "start": 14.42, "end": 18.56, "text": " sur celui d\u00e9j\u00e0 existant, donc je crois que c'est l\u00e0 que la balise a mis un autocollant", "tokens": [51086, 1022, 22829, 12027, 2514, 394, 11, 5926, 1506, 21724, 631, 269, 6, 377, 3684, 631, 635, 3119, 908, 257, 3346, 517, 45833, 1833, 394, 51293], "temperature": 0.0, "avg_logprob": -0.1896892874581473, "compression_ratio": 2.3423076923076924, "no_speech_prob": 0.25903812050819397}, {"id": 6, "seek": 0, "start": 18.56, "end": 23.3, "text": " sur le pare-choc arri\u00e8re de sa voiture et quelqu'un est venu recoller exactement le m\u00eame autocollant", "tokens": [51293, 1022, 476, 7448, 12, 339, 905, 3399, 4212, 368, 601, 38859, 1030, 25283, 6, 409, 871, 6138, 84, 39495, 260, 38111, 476, 5698, 45833, 1833, 394, 51530], "temperature": 0.0, "avg_logprob": -0.1896892874581473, "compression_ratio": 2.3423076923076924, "no_speech_prob": 0.25903812050819397}, {"id": 7, "seek": 0, "start": 23.3, "end": 27.36, "text": " sur celui d\u00e9j\u00e0 existant, donc je crois que c'est l\u00e0 que la balise a mis un autocollant", "tokens": [51530, 1022, 22829, 12027, 2514, 394, 11, 5926, 1506, 21724, 631, 269, 6, 377, 3684, 631, 635, 3119, 908, 257, 3346, 517, 45833, 1833, 394, 51733], "temperature": 0.0, "avg_logprob": -0.1896892874581473, "compression_ratio": 2.3423076923076924, "no_speech_prob": 0.25903812050819397}, {"id": 8, "seek": 2736, "start": 27.36, "end": 29.02, "text": " sur le pare-choc arri\u00e8re de sa voiture.", "tokens": [50365, 1022, 476, 7448, 12, 339, 905, 3399, 4212, 368, 601, 38859, 13, 50448], "temperature": 0.0, "avg_logprob": -0.2770047823588053, "compression_ratio": 0.8333333333333334, "no_speech_prob": 0.4634491205215454}], "language": "fr"}
|
||||
@@ -1,36 +0,0 @@
|
||||
1
|
||||
00:00:00,880 --> 00:00:03,000
|
||||
Brian, on peut en reparler dans une minute ?
|
||||
|
||||
2
|
||||
00:00:03,000 --> 00:00:05,380
|
||||
...de le faire. En plaçant les balises électroniques sur la voiture,
|
||||
|
||||
3
|
||||
00:00:05,700 --> 00:00:08,000
|
||||
il faut simplement accéder au véhicule, faire sauter le réservoir...
|
||||
|
||||
4
|
||||
00:00:08,520 --> 00:00:11,480
|
||||
...Fischer avait mis un autocollant sur le pare-choc arrière de sa voiture
|
||||
|
||||
5
|
||||
00:00:11,480 --> 00:00:14,420
|
||||
et quelqu'un est venu recoller exactement le même autocollant
|
||||
|
||||
6
|
||||
00:00:14,420 --> 00:00:18,560
|
||||
sur celui déjà existant, donc je crois que c'est là que la balise a mis un autocollant
|
||||
|
||||
7
|
||||
00:00:18,560 --> 00:00:23,300
|
||||
sur le pare-choc arrière de sa voiture et quelqu'un est venu recoller exactement le même autocollant
|
||||
|
||||
8
|
||||
00:00:23,300 --> 00:00:27,360
|
||||
sur celui déjà existant, donc je crois que c'est là que la balise a mis un autocollant
|
||||
|
||||
9
|
||||
00:00:27,360 --> 00:00:29,020
|
||||
sur le pare-choc arrière de sa voiture.
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
start end text
|
||||
880 3000 Brian, on peut en reparler dans une minute ?
|
||||
3000 5380 ...de le faire. En plaçant les balises électroniques sur la voiture,
|
||||
5700 8000 il faut simplement accéder au véhicule, faire sauter le réservoir...
|
||||
8520 11480 ...Fischer avait mis un autocollant sur le pare-choc arrière de sa voiture
|
||||
11480 14420 et quelqu'un est venu recoller exactement le même autocollant
|
||||
14420 18560 sur celui déjà existant, donc je crois que c'est là que la balise a mis un autocollant
|
||||
18560 23300 sur le pare-choc arrière de sa voiture et quelqu'un est venu recoller exactement le même autocollant
|
||||
23300 27360 sur celui déjà existant, donc je crois que c'est là que la balise a mis un autocollant
|
||||
27360 29020 sur le pare-choc arrière de sa voiture.
|
||||
|
@@ -1,9 +0,0 @@
|
||||
Brian, on peut en reparler dans une minute ?
|
||||
...de le faire. En plaçant les balises électroniques sur la voiture,
|
||||
il faut simplement accéder au véhicule, faire sauter le réservoir...
|
||||
...Fischer avait mis un autocollant sur le pare-choc arrière de sa voiture
|
||||
et quelqu'un est venu recoller exactement le même autocollant
|
||||
sur celui déjà existant, donc je crois que c'est là que la balise a mis un autocollant
|
||||
sur le pare-choc arrière de sa voiture et quelqu'un est venu recoller exactement le même autocollant
|
||||
sur celui déjà existant, donc je crois que c'est là que la balise a mis un autocollant
|
||||
sur le pare-choc arrière de sa voiture.
|
||||
@@ -1,29 +0,0 @@
|
||||
WEBVTT
|
||||
|
||||
00:00.880 --> 00:03.000
|
||||
Brian, on peut en reparler dans une minute ?
|
||||
|
||||
00:03.000 --> 00:05.380
|
||||
...de le faire. En plaçant les balises électroniques sur la voiture,
|
||||
|
||||
00:05.700 --> 00:08.000
|
||||
il faut simplement accéder au véhicule, faire sauter le réservoir...
|
||||
|
||||
00:08.520 --> 00:11.480
|
||||
...Fischer avait mis un autocollant sur le pare-choc arrière de sa voiture
|
||||
|
||||
00:11.480 --> 00:14.420
|
||||
et quelqu'un est venu recoller exactement le même autocollant
|
||||
|
||||
00:14.420 --> 00:18.560
|
||||
sur celui déjà existant, donc je crois que c'est là que la balise a mis un autocollant
|
||||
|
||||
00:18.560 --> 00:23.300
|
||||
sur le pare-choc arrière de sa voiture et quelqu'un est venu recoller exactement le même autocollant
|
||||
|
||||
00:23.300 --> 00:27.360
|
||||
sur celui déjà existant, donc je crois que c'est là que la balise a mis un autocollant
|
||||
|
||||
00:27.360 --> 00:29.020
|
||||
sur le pare-choc arrière de sa voiture.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"text": " Que \u00e7a soit vraiment dramatique Je suis oblig\u00e9 de jouer Shojin Parce que comme Shogat \u00e7a stack \u00e9norm\u00e9ment d'HP Bah il me faut le plus gros tube possible Y'a un monde o\u00f9 je joue le stuff avec Gage de Sterak et tout et tout Plut\u00f4t un stuff Bruiser Je pense que c'est le meilleur en vrai Dans cette game", "segments": [{"id": 0, "seek": 0, "start": 0.0, "end": 1.68, "text": " Que \u00e7a soit vraiment dramatique", "tokens": [50365, 4493, 2788, 12703, 8322, 7538, 20728, 50449], "temperature": 0.0, "avg_logprob": -0.1219998534007739, "compression_ratio": 1.4413145539906103, "no_speech_prob": 0.19703343510627747}, {"id": 1, "seek": 0, "start": 1.68, "end": 3.96, "text": " Je suis oblig\u00e9 de jouer Shojin", "tokens": [50449, 2588, 7624, 9270, 526, 368, 30823, 31404, 13970, 50563], "temperature": 0.0, "avg_logprob": -0.1219998534007739, "compression_ratio": 1.4413145539906103, "no_speech_prob": 0.19703343510627747}, {"id": 2, "seek": 0, "start": 3.96, "end": 6.48, "text": " Parce que comme Shogat \u00e7a stack \u00e9norm\u00e9ment d'HP", "tokens": [50563, 20429, 631, 5173, 1160, 664, 267, 2788, 8630, 41595, 274, 6, 39, 47, 50689], "temperature": 0.0, "avg_logprob": -0.1219998534007739, "compression_ratio": 1.4413145539906103, "no_speech_prob": 0.19703343510627747}, {"id": 3, "seek": 0, "start": 6.48, "end": 8.2, "text": " Bah il me faut le plus gros tube possible", "tokens": [50689, 14782, 1930, 385, 8487, 476, 1804, 18638, 9917, 1944, 50775], "temperature": 0.0, "avg_logprob": -0.1219998534007739, "compression_ratio": 1.4413145539906103, "no_speech_prob": 0.19703343510627747}, {"id": 4, "seek": 0, "start": 8.2, "end": 16.46, "text": " Y'a un monde o\u00f9 je joue le stuff avec Gage de Sterak et tout et tout", "tokens": [50775, 398, 6, 64, 517, 10431, 9068, 1506, 46209, 476, 1507, 4163, 460, 609, 368, 33539, 514, 1030, 3486, 1030, 3486, 51188], "temperature": 0.0, "avg_logprob": -0.1219998534007739, "compression_ratio": 1.4413145539906103, "no_speech_prob": 0.19703343510627747}, {"id": 5, "seek": 0, "start": 16.46, "end": 17.6, "text": " Plut\u00f4t un stuff Bruiser", "tokens": [51188, 2149, 325, 8775, 517, 1507, 12792, 6694, 51245], "temperature": 0.0, "avg_logprob": -0.1219998534007739, "compression_ratio": 1.4413145539906103, "no_speech_prob": 0.19703343510627747}, {"id": 6, "seek": 0, "start": 17.6, "end": 19.98, "text": " Je pense que c'est le meilleur en vrai", "tokens": [51245, 2588, 11209, 631, 269, 6, 377, 476, 41457, 465, 17815, 51364], "temperature": 0.0, "avg_logprob": -0.1219998534007739, "compression_ratio": 1.4413145539906103, "no_speech_prob": 0.19703343510627747}, {"id": 7, "seek": 0, "start": 19.98, "end": 21.1, "text": " Dans cette game", "tokens": [51364, 16897, 5550, 1216, 51420], "temperature": 0.0, "avg_logprob": -0.1219998534007739, "compression_ratio": 1.4413145539906103, "no_speech_prob": 0.19703343510627747}], "language": "fr"}
|
||||
@@ -0,0 +1,32 @@
|
||||
1
|
||||
00:00:00,000 --> 00:00:01,680
|
||||
Que ça soit vraiment dramatique
|
||||
|
||||
2
|
||||
00:00:01,680 --> 00:00:03,960
|
||||
Je suis obligé de jouer Shojin
|
||||
|
||||
3
|
||||
00:00:03,960 --> 00:00:06,480
|
||||
Parce que comme Shogat ça stack énormément d'HP
|
||||
|
||||
4
|
||||
00:00:06,480 --> 00:00:08,200
|
||||
Bah il me faut le plus gros tube possible
|
||||
|
||||
5
|
||||
00:00:08,200 --> 00:00:16,460
|
||||
Y'a un monde où je joue le stuff avec Gage de Sterak et tout et tout
|
||||
|
||||
6
|
||||
00:00:16,460 --> 00:00:17,600
|
||||
Plutôt un stuff Bruiser
|
||||
|
||||
7
|
||||
00:00:17,600 --> 00:00:19,980
|
||||
Je pense que c'est le meilleur en vrai
|
||||
|
||||
8
|
||||
00:00:19,980 --> 00:00:21,100
|
||||
Dans cette game
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
start end text
|
||||
0 1680 Que ça soit vraiment dramatique
|
||||
1680 3960 Je suis obligé de jouer Shojin
|
||||
3960 6480 Parce que comme Shogat ça stack énormément d'HP
|
||||
6480 8200 Bah il me faut le plus gros tube possible
|
||||
8200 16460 Y'a un monde où je joue le stuff avec Gage de Sterak et tout et tout
|
||||
16460 17600 Plutôt un stuff Bruiser
|
||||
17600 19980 Je pense que c'est le meilleur en vrai
|
||||
19980 21100 Dans cette game
|
||||
|
@@ -0,0 +1,8 @@
|
||||
Que ça soit vraiment dramatique
|
||||
Je suis obligé de jouer Shojin
|
||||
Parce que comme Shogat ça stack énormément d'HP
|
||||
Bah il me faut le plus gros tube possible
|
||||
Y'a un monde où je joue le stuff avec Gage de Sterak et tout et tout
|
||||
Plutôt un stuff Bruiser
|
||||
Je pense que c'est le meilleur en vrai
|
||||
Dans cette game
|
||||
@@ -0,0 +1,26 @@
|
||||
WEBVTT
|
||||
|
||||
00:00.000 --> 00:01.680
|
||||
Que ça soit vraiment dramatique
|
||||
|
||||
00:01.680 --> 00:03.960
|
||||
Je suis obligé de jouer Shojin
|
||||
|
||||
00:03.960 --> 00:06.480
|
||||
Parce que comme Shogat ça stack énormément d'HP
|
||||
|
||||
00:06.480 --> 00:08.200
|
||||
Bah il me faut le plus gros tube possible
|
||||
|
||||
00:08.200 --> 00:16.460
|
||||
Y'a un monde où je joue le stuff avec Gage de Sterak et tout et tout
|
||||
|
||||
00:16.460 --> 00:17.600
|
||||
Plutôt un stuff Bruiser
|
||||
|
||||
00:17.600 --> 00:19.980
|
||||
Je pense que c'est le meilleur en vrai
|
||||
|
||||
00:19.980 --> 00:21.100
|
||||
Dans cette game
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"18:06:49": "Rapprocher les objets, cest comme faire lamour, ça prend du temps mais cest marrant !",
|
||||
"18:07:33": "Le gars est complètement dingue ! Il me raconte des histoires à dormir debout. Jai limpression dêtre dans un film de science-fiction. À mon niveau, jen ai marre de ces conneries. On devrait vraiment le frapper sur la tête pour lui faire tenir sa langue.Cette version conserve lessence humoristique et légère du texte original, tout en le rendant plus clair et plus court. Elle utilise également quelques expressions familières pour ajouter une touche de verve au texte.",
|
||||
"18:08:14": "```// Code de guerre du clavier (version légère)const PATATES = 42;const BORDEL = extremine;function exterminerBordel() { console.log(Patate !);}for (let i = 0; i < PATATES; i++) { exterminerBordel();}```Ce code est en JavaScript et utilise des variables humoristiques pour créer un effet comique. Il sagit dun exemple de code qui pourrait être utilisé dans un contexte ludique ou pédagogique."
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"18:06:43": "En vrai elles sont compliquées à rapprocher en vrai. Pour Rakan et moi très rapprocher. Quest-ce quil fout ?",
|
||||
"18:07:21": "Mais cest un fou lui enfin cest... Cest quoi ce malade mental là ? Il mexplique ou... Je pense quon les bat. suis niveau 11 et tout je peux mettre sacré ult.",
|
||||
"18:07:58": "voilà cest pas dur clavier de guerre et non plus au vp v énorme mais vraiment les patates que je vais mettre là ça va exterminer la bordel",
|
||||
"18:08:38": "Aïe aïe Ah mais quand tu joues à LOL Genre deviens fou sur ton clavier Par contre ça cest pas mal Ça me fait bien comme back par vraiment chier le que là Varus A eu kill Bon après je pense Que",
|
||||
"18:08:57": "Que ça soit vraiment dramatique Je suis obligé de jouer Shojin Parce que comme Shogat stack énormément dHP Bah il me faut le plus gros tube possible Ya un monde où je joue stuff avec Gage Sterak et tout Plutôt Bruiser pense cest meilleur en vrai Dans cette game"
|
||||
}
|
||||
Reference in New Issue
Block a user