Compare commits

..

528 commits

Author SHA1 Message Date
Milka64 6b9e153de1 try to fix command prefix 2024-01-02 16:45:19 +01:00
Milka64 6504c286da add more None un kron 2024-01-02 15:52:14 +01:00
Milka64 8cca3c1990 fix boulette 2023-12-29 17:18:12 +01:00
Milka64 b7d3546cea fix some traceback in logs 2023-12-29 17:10:09 +01:00
Milka64 6f2460eaef WIP #32 2023-12-29 15:50:46 +01:00
Milka64 3cdec52d81 Fix welcome text message 2023-12-29 15:39:10 +01:00
Milka64 9a4e9b3735 Fix welcome text message 2023-12-29 15:32:40 +01:00
Milka64 2fadbe74c0 WIP #32 2023-12-29 15:21:57 +01:00
Milka64 2d8518e169 WIP #32 2023-12-29 15:10:40 +01:00
Milka64 26a30c9af8 WIP #32 2023-12-29 15:00:02 +01:00
Milka64 d33eb077a7 WIP #32 2023-12-29 14:48:17 +01:00
Milka64 daa3c7aa0d WIP #32 2023-12-29 14:20:47 +01:00
Milka64 f2b6638616 WIP #32 2023-12-29 14:00:02 +01:00
Milka64 d913af4378 WIP #32 2023-12-29 11:54:19 +01:00
Milka64 2d893dbda2 Ajout d'une limite à la commande find #51 2023-12-29 10:34:41 +01:00
Milka64 a6a7eb07bc WIP #51 2023-12-29 10:24:03 +01:00
Milka64 012feae29c WIP #51 2023-12-28 17:10:52 +01:00
Milka64 c3e590fd2c fix #11 2023-12-28 11:32:02 +01:00
Milka64 8e654da976 update variable 2023-12-27 17:12:00 +01:00
Milka64 5dd913d1ca update variable 2023-12-27 17:10:36 +01:00
Milka64 e8fef9801e ci-cd 2023-12-27 17:07:15 +01:00
Milka64 ff98d6b453 rattrapage 2023-12-27 16:54:31 +01:00
Milka64 a046a4d55f update version 2023-12-27 08:38:28 +01:00
Milka64 82c5c6501c fix kron function 2023-12-27 08:37:20 +01:00
Milka64 ccde0ff81d deploy dockerfile 2023-12-26 15:32:21 +01:00
Milka64 30e89ba49c update version 2023-12-26 13:42:52 +01:00
Milka64 55d4045a2e fix entrypoint 2023-12-26 13:42:00 +01:00
Milka64 d2291738bb fix import && update version 2023-12-26 13:28:46 +01:00
Milka64 d77d390efe typo 2023-12-26 13:25:05 +01:00
Milka64 c47df4b78c code refactoring 2023-12-26 13:19:46 +01:00
Milka64 5792a88911 fix intents 2023-12-13 21:22:50 +01:00
Milka64 a9cc9e20c0 fix some stuff 2023-12-11 20:56:46 +01:00
BFlow 112760299f Merge remote-tracking branch 'origin/master' 2021-12-14 16:34:41 +01:00
BFlow 1f52550d29 update commande "!cboulette" + something 2021-12-14 16:32:42 +01:00
BFlow 1f9fe5dfd1 Upload New File 2021-12-14 15:31:58 +00:00
BFlow 0c9aeece81 add commande "!cboulette" 2021-12-14 16:22:23 +01:00
Milka64 d1f7d91485 fix youtube dl timeout 2021-12-14 15:16:04 +01:00
Milka64 84dd36208f try to fix schizo cmd 2021-11-21 16:49:43 +01:00
Milka64 239bbe259e try to fix schizo cmd 2021-11-21 16:48:04 +01:00
Milka64 34b1c075b6 try to fix schizo cmd 2021-11-21 16:47:01 +01:00
Milka64 dc0ab7d0d7 try to fix schizo cmd 2021-11-21 16:38:30 +01:00
BFlow 5bc0329c22 add schizo dans les events 2021-05-04 22:36:56 +02:00
BFlow cb007a7126 command schizo 2021-05-04 22:34:32 +02:00
BFlow fbba7aae52 command schizo
fix avatar bot
2021-05-04 21:57:09 +02:00
BFlow e4a3e88511 command schizo
fix avatar bot
2021-05-04 21:47:32 +02:00
BFlow 8349448540 command schizo 2021-05-03 21:46:46 +02:00
BFlow bbbb4bd21b Upload New File 2021-04-13 22:13:50 +00:00
BFlow 1611683036 Upload New File 2021-04-13 22:04:54 +00:00
BFlow 186eccff93 Upload New File 2021-04-13 22:04:33 +00:00
BFlow d9925249ad Upload New File 2021-04-13 22:03:50 +00:00
BFlow 3742c4bd5a Upload New File 2021-04-13 22:03:32 +00:00
BFlow c5d3835c57 img pour la commande schizo 2021-04-13 22:03:03 +00:00
BFlow f5703709d1 avatar pour la commande schizo 2021-04-13 22:01:27 +00:00
Milka64 a6437ee322 fix joke issue 2021-02-21 20:45:28 +01:00
Milka64 5207baf83f WIP on #11 2021-02-18 22:08:17 +01:00
Milka64 b719019dbd WIP on #11 2021-02-18 22:04:29 +01:00
Milka64 abb7f34d9f WIP on #11 2021-02-18 21:54:01 +01:00
Milka64 7031a76b06 fix boulette 2021-01-30 21:35:52 +01:00
Milka64 7ab8aa21b9 fix #53 2021-01-30 21:28:34 +01:00
Milka64 705ba32565 fix configuration documentation 2021-01-09 18:55:55 +01:00
Milka64 43508edc66 update README 2021-01-09 18:52:35 +01:00
Milka64 4999c52437 add text & voice channle in config file 2021-01-07 20:15:21 +01:00
Milka64 e790569a27 log debug → info 2021-01-06 20:33:16 +01:00
Milka64 ef24e2a2bf check if config file exists 2021-01-05 20:01:44 +01:00
Milka64 e391b138e5 add config file in args 2021-01-05 19:41:08 +01:00
Milka64 1861f39450 fix update error 2021-01-04 18:33:48 +01:00
Milka64 de994a3592 fix welcome error 2021-01-04 18:31:32 +01:00
Milka64 3aea250608 add update for audio repository 2021-01-04 18:24:30 +01:00
Milka64 a8cc570aa4 add audio path in config file 2021-01-04 18:21:02 +01:00
Milka64 21c7969b2a Merge branch 'master' of http://git.0w.tf/Milka64/kabot 2021-01-04 18:00:38 +01:00
Milka64 bbdd26a24c add config sample 2021-01-04 18:00:16 +01:00
Milka64 0f830d8c18 add config sample 2020-12-30 19:02:01 +01:00
Milka64 310c4288a4 remove credentials 2020-12-26 23:46:02 +01:00
Milka64 f74d152d81 fix issue print seconde edition 2020-12-26 18:47:05 +01:00
Milka64 da70ab9d8c fix issue print 2020-12-26 18:34:36 +01:00
BFlow 812c5139a2 hihi 2020-12-17 13:58:04 +00:00
Milka64 84b09f4217 try to fix restart cmd again 2020-12-13 18:33:37 +01:00
Milka64 68525eeafd try to fix restart cmd again 2020-12-13 18:28:57 +01:00
Milka64 f127c9ed75 fix gitlab -> Gitlab #23 2020-12-13 18:21:20 +01:00
Milka64 ebae4dabbd fuuuuuuu #23 2020-12-13 18:10:29 +01:00
Milka64 84637f4f32 fucking comma #23 2020-12-13 17:13:08 +01:00
Milka64 91b758faa9 fix error for #23 2020-12-13 17:10:14 +01:00
Milka64 3beea52ed9 typo for #23 2020-12-13 16:55:21 +01:00
Milka64 29de2a539a clean code for #23 2020-12-13 16:51:19 +01:00
Milka64 283a3919f0 wait for leave vocal before restart #41 2020-12-13 16:25:37 +01:00
Milka64 502911be81 check if voice enabled #41 2020-12-13 16:20:48 +01:00
Milka64 0bbe882e77 Merge branch 'Milka64-master-patch-96392' into 'master'
Update kabot/kabot/kabot.py

See merge request Milka64/kabot!1
2020-11-22 20:30:14 +00:00
Milka64 1dd31a4a81 Update kabot/kabot/kabot.py 2020-11-22 20:29:59 +00:00
Milka64 ba5e20d415 add Mario NON 2020-11-19 21:52:19 +01:00
BFlow 39adda86e2 VRAIMENT 2020-11-16 17:52:17 +00:00
BFlow c4cbaaf9b8 Upload New File 2020-10-10 13:07:55 +00:00
BFlow 0e714be66f Upload New File 2020-09-27 20:37:11 +00:00
BFlow 237baf0a1e Upload New File 2020-09-08 10:34:29 +00:00
Milka64 33be6d59f4 fix youtube error in play cmd 2020-09-08 11:02:42 +02:00
BFlow ef4ebf1c35 correction cmd say 2020-09-04 23:01:24 +02:00
BFlow ec84a18e76 correction cmd say 2020-09-04 22:57:25 +02:00
BFlow 6b3e0a0b4f correction cmd say 2020-09-04 22:31:36 +02:00
BFlow 9fd12991b6 correction command clear_cache youtube dl, cmd say 2020-09-04 22:25:34 +02:00
BFlow 0995303080 command clear_cache youtube dl, prise en compte des commandes dans l'historique kabot 2020-09-04 22:02:46 +02:00
BFlow fc29b8931b Upload New File 2020-09-01 13:20:40 +00:00
BFlow d97895feaf dernier commit 2020-08-27 18:55:33 +02:00
BFlow a670726056 Merge remote-tracking branch 'origin/master' 2020-08-27 18:52:11 +02:00
BFlow 8a8db57257 commands commit 2020-08-27 18:51:37 +02:00
Milka64 68ef3d2ea1 Update kabot.py 2020-08-27 16:46:45 +00:00
BFlow aa0274ba22 command commit 2020-08-27 18:40:26 +02:00
BFlow 36b1445994 correction commande commit 2020-08-27 18:34:19 +02:00
BFlow 0903b7a1c7 correction commande commit 2020-08-27 18:27:26 +02:00
BFlow a6790533d1 test 2020-08-27 18:03:18 +02:00
BFlow 6c507593f5 test 2020-08-27 17:59:26 +02:00
BFlow ef1ff4e23c test 2020-08-27 17:56:21 +02:00
BFlow c861d2b854 correction commande commit 2020-08-27 17:48:40 +02:00
BFlow 69bce93eb6 correction commande commit 2020-08-27 17:45:05 +02:00
BFlow cabbc221d1 test 2020-08-27 17:43:57 +02:00
BFlow bec13c53b5 correction commande commit 2020-08-27 17:39:57 +02:00
BFlow be29a2942c correction commande commit 2020-08-27 17:38:35 +02:00
BFlow 60697c80c7 command commit 2020-08-27 17:34:04 +02:00
BFlow f955b71230 commands commit 2020-08-27 17:22:25 +02:00
BFlow 648e3dcc57 Upload New File 2020-08-26 14:44:49 +00:00
BFlow 7434bb9592 Delete ce_film_nest_pas_sur_le_cyclimse.mp3 2020-08-26 14:44:14 +00:00
BFlow e7de70d262 Upload New File 2020-08-26 14:42:49 +00:00
BFlow b99f913681 Upload New File 2020-08-18 18:57:13 +00:00
Milka64 300b138fe2 fix #35 2020-08-13 22:18:37 +02:00
Milka64 518687059f Update kabot.py 2020-08-13 20:03:55 +00:00
Milka64 8efd8d2354 tryx to fix #35 2020-08-13 20:00:28 +00:00
BFlow 98bf031cd6 Upload New File 2020-08-04 20:38:02 +00:00
BFlow 175c5f7bd5 Upload New File 2020-08-03 21:01:52 +00:00
Milka64 1db3b11f2f Update kabot.py 2020-07-23 11:50:45 +00:00
BFlow c30d54e359 Upload New File 2020-07-15 09:18:15 +00:00
BFlow 63cecd91ce Upload New File 2020-07-15 09:12:17 +00:00
BFlow 3a83ef09ae Upload New File 2020-06-22 17:54:22 +00:00
BFlow d204cf827e Upload New File 2020-06-22 17:24:30 +00:00
BFlow 3dd11392f6 Upload New File 2020-06-22 17:02:36 +00:00
BFlow 2d4e5cc36c Upload New File 2020-06-22 16:55:07 +00:00
BFlow 164e092d80 Upload New File 2020-06-13 18:51:00 +00:00
BFlow 77c6d11fa6 Upload New File 2020-06-13 16:52:05 +00:00
BFlow 51a0be5129 Upload New File 2020-06-13 11:58:29 +00:00
BFlow 12bc08ea52 Upload New File 2020-06-12 17:33:55 +00:00
BFlow 63bc49e6a3 Upload New File 2020-06-12 17:22:14 +00:00
root 71eb1f7ee8 fix dependencies 2020-06-12 17:21:01 +00:00
BFlow 097afb9f86 Upload New File 2020-06-12 17:06:05 +00:00
BFlow 91fef22ba0 Upload New File 2020-05-25 10:25:44 +00:00
BFlow b4176e3b4d Upload New File 2020-05-18 21:11:34 +00:00
BFlow b4e201e177 Upload New File 2020-05-18 12:06:56 +00:00
BFlow a4b7d1e77a huhu 2020-05-18 11:57:57 +00:00
BFlow b34992cb86 ouf 2020-05-18 11:57:39 +00:00
BFlow d431a0a904 y'en a qui sont bizard 2020-05-18 10:55:26 +00:00
BFlow f1a702930b biiiip! 2020-05-18 10:55:03 +00:00
Milka64 477e765316 fix os.path error 2020-05-05 21:16:42 +02:00
Milka64 ae285863d1 fix boulette suppresion kaamelott 2020-05-05 20:27:14 +02:00
BFlow 8b7e1bb688 on fait du tri 2020-05-05 20:03:49 +02:00
BFlow 95b458200c on fait du tri 2020-05-05 19:58:50 +02:00
BFlow f5462da4b4 correction last 2020-05-05 17:06:30 +02:00
BFlow 053a725c4c add command last 2020-05-05 17:04:44 +02:00
BFlow 0352ea290e add command last 2020-05-05 16:54:49 +02:00
Milka64 0d397e06a4 fix boulette 2020-05-04 20:57:23 +02:00
Milka64 2585d99183 Merge branch 'master' of http://git.0w.tf/Milka64/kabot 2020-05-04 20:54:26 +02:00
Milka64 f8668604cf fix boulette 2020-05-04 20:54:12 +02:00
BFlow 02cbc28dc1 Upload New File 2020-05-04 18:52:34 +00:00
Milka64 f8c58fe7ac initialisation des logs 2020-05-04 20:52:15 +02:00
BFlow 0f2acfdabf #deltaplane 2020-05-04 12:15:19 +00:00
BFlow b8c18e5a07 Upload New File 2020-05-04 12:07:00 +00:00
BFlow 7fd4d9dc5f correction command play 2020-04-29 18:47:58 +02:00
BFlow 5ed705a41c correction command play 2020-04-29 17:56:55 +02:00
BFlow 595d2f9a19 correction command play 2020-04-29 17:54:24 +02:00
BFlow a13887de58 correction command play 2020-04-29 17:46:31 +02:00
BFlow f238171ca1 correction from __future__ import unicode_literals 2020-04-29 17:39:16 +02:00
BFlow 033c187396 add command play 2020-04-29 17:35:32 +02:00
Milka64 75b32ef3fb add too_long arg 2020-04-29 15:30:34 +02:00
BFlow 23e6896be6 add command okre 2020-04-29 15:15:02 +02:00
BFlow aedc82876c add command joker 2020-04-29 15:07:39 +02:00
BFlow f1a79ffa8f add command trollpower 2020-04-29 14:47:05 +02:00
Milka64 f68a9f621f add clear command 2020-04-29 14:45:12 +02:00
Milka64 140f390660 add stop command 2020-04-29 14:42:50 +02:00
BFlow f5c063a1a8 add command joe 2020-04-29 14:27:00 +02:00
BFlow 4727e7416b add contrepeterie a la fonction kron 2020-04-29 14:07:06 +02:00
Admin cd30d66d72 Ajout du spoil 2020-04-29 13:18:12 +02:00
BFlow 52b11452c2 correction contrepetrie 2020-04-29 12:12:42 +02:00
BFlow f6e2efb0ca Upload New File 2020-04-29 08:19:44 +00:00
BFlow 7ecbd57571 Upload New File 2020-04-29 08:19:30 +00:00
BFlow 96bf856059 correction command choice 2020-04-28 21:23:30 +02:00
BFlow ed125f7230 add command choice 2020-04-28 21:21:33 +02:00
BFlow a403422e10 correction lines 2020-04-28 15:08:20 +02:00
BFlow 0422668097 ajustement du temps d'écriture de kabot 2020-04-28 15:01:58 +02:00
BFlow 64d3234cab peaufinement n°2 de la classification par ordre alphabetique du bot 2020-04-28 14:58:55 +02:00
BFlow 88fb5444e9 peaufinement de la classification par ordre alphabetique du bot 2020-04-28 14:53:22 +02:00
BFlow e46ea1f626 classification par ordre alphabetique du bot 2020-04-28 14:36:20 +02:00
BFlow 991849e907 Upload New File 2020-04-27 08:24:23 +00:00
BFlow ce052ec525 Upload New File 2020-04-27 08:19:54 +00:00
BFlow 11ff420595 Upload New File 2020-04-26 12:41:58 +00:00
BFlow 4c664a2343 Upload New File 2020-04-26 12:34:48 +00:00
BFlow ca4913d145 Upload New File 2020-04-26 08:11:09 +00:00
Milka64 3d690379f7 fix path variable #4 2020-04-25 21:44:18 +02:00
Milka64 ba4d1cf115 add Dockerfile 2020-04-25 21:07:02 +02:00
BFlow cb4ed715b3 test n°7 command say 2020-04-25 20:28:05 +02:00
BFlow e84bde3fca test n°6 command say 2020-04-25 20:26:44 +02:00
BFlow 228723a1a4 test n°5 command say 2020-04-25 20:23:44 +02:00
BFlow f9c51f2009 test n°4 command say 2020-04-25 20:22:08 +02:00
BFlow 5793432802 test n°3 command say 2020-04-25 20:20:01 +02:00
BFlow 4307084384 test n°2 command say 2020-04-25 20:18:15 +02:00
BFlow c2a9e3302b test n°1 command say 2020-04-25 20:15:46 +02:00
BFlow 08bfb3c744 correction n°4 command say 2020-04-25 20:10:39 +02:00
Milka64 09fe02357b fix buildout.cfg 2020-04-25 19:56:54 +02:00
BFlow 12d6b3c23f correction n°3 command say 2020-04-25 19:40:43 +02:00
BFlow 797b36391d correction n°2 command say 2020-04-25 19:39:59 +02:00
BFlow 8083e0a41f correction command say 2020-04-25 19:37:14 +02:00
BFlow 63c3bc353d add command say 2020-04-25 19:33:20 +02:00
Admin 1db9e9685f Repare ma connerie 2020-04-24 18:06:25 +02:00
Admin a4a85e929f contrepeterie 2020-04-24 17:55:48 +02:00
BFlow 98b6f66a90 Upload New File 2020-04-24 15:45:02 +00:00
BFlow 038808fb3c Upload New File 2020-04-24 15:41:56 +00:00
BFlow d739699c24 Upload New File 2020-04-24 15:39:58 +00:00
BFlow a2937192be Upload New File 2020-04-24 15:38:53 +00:00
BFlow 7d3ffe2fdf Upload New File 2020-04-24 15:36:22 +00:00
BFlow 2b2849e39a Upload New File 2020-04-24 15:35:17 +00:00
BFlow 6987c5fc4f Upload New File 2020-04-24 15:33:29 +00:00
BFlow 6cf150b3b0 Upload New File 2020-04-24 15:32:32 +00:00
BFlow 968f7df735 Upload New File 2020-04-24 15:30:46 +00:00
BFlow dc89a557f4 Upload New File 2020-04-24 15:28:30 +00:00
BFlow 9107823739 Upload New File 2020-04-24 15:27:02 +00:00
BFlow f80d1a3252 Delete puzzle.mp3 2020-04-24 15:26:49 +00:00
BFlow 21d236edb7 Upload New File 2020-04-24 15:24:05 +00:00
BFlow 6898bdb204 Upload New File 2020-04-24 15:20:36 +00:00
BFlow 66fd7a1184 Upload New File 2020-04-24 15:20:06 +00:00
BFlow 77ccc042b4 Upload New File 2020-04-24 15:18:01 +00:00
BFlow b214d69827 Upload New File 2020-04-24 15:17:00 +00:00
BFlow 50675bfbee Upload New File 2020-04-24 15:11:55 +00:00
Admin 734606304d Pour la feature contrepeterie 2020-04-24 16:55:26 +02:00
BFlow f6380de580 correction n°3 add author (!issue ad) 2020-04-24 12:18:42 +02:00
BFlow 2f591a82e5 correction n°2 add author (!issue ad) 2020-04-24 12:15:59 +02:00
BFlow 98f4ae45ab correction add author (!issue ad) 2020-04-24 12:10:44 +02:00
BFlow 931ae99f4c add author (!issue ad) 2020-04-24 12:02:23 +02:00
BFlow cc2bc6a287 correction add help commande issue 2020-04-24 10:13:54 +02:00
BFlow 0fbcf24898 correction add help commande issue 2020-04-24 10:11:23 +02:00
BFlow 3cfa6ec653 correction add help commande issue 2020-04-24 10:10:24 +02:00
BFlow 8881f7074c correction add help commande issue 2020-04-24 10:06:16 +02:00
BFlow e438e187d2 add help commande issue 2020-04-24 10:01:45 +02:00
Admin d03d94b0f2 wololo 2020-04-23 11:30:06 +02:00
BFlow 3196180bfa Upload New File 2020-04-22 12:47:52 +00:00
BFlow dfae58a67e add sleep command roulette 2020-04-21 20:45:00 +02:00
BFlow 36441c2d9e add sleep command roulette 2020-04-21 20:38:46 +02:00
BFlow c75bc4a5dc add sleep command roulette 2020-04-21 12:33:28 +02:00
BFlow ede212f879 add sound command roulette 2020-04-21 12:27:47 +02:00
BFlow 2f7c4eb8a2 add sound command roulette 2020-04-21 12:24:59 +02:00
BFlow 4035bf390f add sound command roulette 2020-04-21 12:22:46 +02:00
BFlow 21d235f0ac Merge remote-tracking branch 'origin/master' 2020-04-21 12:21:23 +02:00
BFlow 0ea18049d9 add sound command roulette 2020-04-21 12:21:12 +02:00
BFlow 3cece8b5f9 Upload New File 2020-04-21 10:13:28 +00:00
BFlow 0a139ec1d1 Upload New File 2020-04-21 10:13:12 +00:00
BFlow 36f514b856 correction sleep to asyncio 2020-04-20 16:42:37 +02:00
BFlow d89024d32f add sleep quand l'autre con il parle 2020-04-20 16:35:07 +02:00
BFlow 1804f6d1e2 correction typing message in on_message 2020-04-20 16:15:19 +02:00
BFlow 5a45012175 correction typing message in on_message 2020-04-20 16:06:17 +02:00
BFlow b5c00d5504 add typing message in on_message 2020-04-20 16:02:20 +02:00
BFlow 53d7c61841 correction try 3 song pour roulette 2020-04-20 15:37:24 +02:00
BFlow 3a5285b089 correction 2 song pour roulette 2020-04-20 15:31:30 +02:00
BFlow 6ed96d49ab correction song pour roulette 2020-04-20 15:29:38 +02:00
BFlow da46fb88f1 ajout song pour roulette 2020-04-20 15:27:30 +02:00
BFlow 57a0247c8e NANI ?!? 2020-04-20 13:11:58 +00:00
remi e1898ca4d8 petite correction de avenir 2020-04-18 15:11:49 +02:00
remi 4d45a06cb7 reajout avenir 2020-04-18 12:50:44 +02:00
remi 0cb2a6b355 Ajout de la commande avenir 2020-04-18 12:24:55 +02:00
BFlow bf2c0fd7b4 Upload New File 2020-04-17 14:35:23 +00:00
BFlow 7d54de95a4 roulette 4eme essai 2020-04-17 16:33:34 +02:00
BFlow f316d08c0e roulette 3eme essai 2020-04-17 16:30:06 +02:00
BFlow 83837c62da roulette 2eme essai 2020-04-17 16:27:41 +02:00
BFlow a240302e70 roulette 60s pas 10 2020-04-17 16:26:59 +02:00
BFlow 386c70f803 roulette 1er essai 2020-04-17 16:24:43 +02:00
BFlow 682de524c1 Le bot est gentil essai 4 2020-04-17 15:02:36 +02:00
BFlow 6f1a214eef Le bot est gentil essai 3 2020-04-17 14:56:34 +02:00
BFlow a7f43332af Le bot est gentil essai 2 2020-04-17 14:54:02 +02:00
BFlow 90a2443900 Merge remote-tracking branch 'origin/master' 2020-04-17 14:51:10 +02:00
BFlow aa01f1d89c Le bot est gentil pour une fois 2020-04-17 14:50:39 +02:00
Admin 35a310294a xXMerge branch 'master' of http://git.0w.tf/Milka64/kabot 2020-04-17 13:59:04 +02:00
Admin 86ec7fa983 booba 2020-04-17 13:58:28 +02:00
BFlow c935afd059 Mute 7eme essai 2020-04-17 13:58:18 +02:00
BFlow d6aeafb410 Mute 6er essai 2020-04-17 13:55:10 +02:00
BFlow 35aaac9baf Mute 5er essai 2020-04-17 13:19:40 +02:00
BFlow 8252930ee4 Mute 4er essai 2020-04-17 12:46:45 +02:00
BFlow 1ba79e3172 Mute 3er essai 2020-04-17 12:41:56 +02:00
BFlow a598e7dfaa Mute 2er essai 2020-04-17 12:39:53 +02:00
BFlow c357efd459 Mute 1er essai 2020-04-17 12:29:11 +02:00
BFlow 3836b06f5c c'est un connerie ! 2020-04-17 10:23:26 +00:00
BFlow 5c0a0d39ab Upload New File 2020-04-15 11:57:38 +00:00
BFlow 698924476e Delete salaup.mp3 2020-04-15 11:57:29 +00:00
BFlow 25f3eb749f Upload New File 2020-04-15 11:56:26 +00:00
BFlow bfd2ab4088 Upload New File 2020-04-15 11:54:03 +00:00
BFlow ba072051a1 Upload New File 2020-04-13 13:55:25 +00:00
BFlow f85ef2b7e4 Kamoulox 2.0 correction 2020-04-10 17:26:52 +02:00
BFlow 81fa20ee12 Kamoulox 2.0 correction 2020-04-10 17:23:42 +02:00
BFlow 0a0a83b90e Kamoulox 2.0 correction 2020-04-10 17:16:18 +02:00
BFlow 58e8287348 Kamoulox 2.0 correction 2020-04-10 17:09:49 +02:00
BFlow f0f182560f Kamoulox 2.0 correction 2020-04-10 17:02:34 +02:00
BFlow 9f4106a5b5 Upload New File 2020-04-10 14:57:39 +00:00
BFlow 848ad22eed add new 2020-04-10 14:57:20 +00:00
BFlow 79f4f81ff8 Kamoulox 2.0 2020-04-10 16:53:48 +02:00
BFlow 009e6d91cd prejent !!!!! 2020-04-10 08:42:57 +00:00
Admin f4d94e29c8 chanter les oreilles 2020-04-10 08:00:50 +02:00
BFlow a68434b138 don't don't do that ! 2020-04-09 21:46:50 +00:00
BFlow 7daf52b9f7 haaaaaahhhhhhaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaa! 2020-04-09 21:41:30 +00:00
BFlow c0be47a4e2 ajout de kamoulox dans le kron et muselage du bot 2020-04-09 16:53:58 +02:00
BFlow c93b333b57 correction commmande kamoulox 2020-04-09 16:49:08 +02:00
BFlow 07f814c7d7 correction N°2 command issue 2020-04-09 16:43:20 +02:00
Admin 08df771274 Add bat les couilles 2020-04-03 10:51:17 +02:00
BFlow b5ead5e8fc Upload New File 2020-03-31 18:33:19 +00:00
BFlow 1e067a4544 c'est vraiment trop marrant 2020-03-31 18:26:27 +00:00
BFlow 2a44a47405 c'est ta tête à l'endroit 2020-03-31 15:15:14 +00:00
BFlow d1e029747f Mais ils sont où tes cheveux?? 2020-03-31 15:10:01 +00:00
BFlow 2ffd0aacad RAOULT RAOULT RAOULT 2020-03-26 20:35:06 +00:00
BFlow 1bf65a8124 pas convaincu 2020-03-25 23:14:41 +00:00
BFlow 6979bdebae foulindra 2020-03-25 22:02:45 +00:00
BFlow 014fbb35ee correction N°2 command issue 2020-03-25 18:25:51 +01:00
BFlow f0985e4752 correction command issue 2020-03-25 18:22:03 +01:00
BFlow 679515ca84 add command issue 2020-03-25 18:01:05 +01:00
BFlow fcfc1c8b9b hmmmmmmmmmmmmmmmmmmmmmmmm 2020-03-24 13:34:59 +00:00
BFlow 40e0f7be96 ouais ouais ouais 2020-03-23 14:11:32 +00:00
BFlow a769760ed9 Upload New File 2020-03-23 14:03:20 +00:00
BFlow dbc8cffa5c Delete d_accord.mp3 2020-03-23 14:03:12 +00:00
BFlow 0706c0f77e rename peepoodo daccord 2020-03-23 14:02:37 +00:00
BFlow add5094090 rename ZuZen audio 2020-03-23 14:58:14 +01:00
BFlow 1eb1af14aa le titre trop long 2020-03-21 20:30:07 +00:00
Milka64 fe649d530b fix repeat cmd 2020-03-21 14:57:15 +01:00
Milka64 d1af880652 add somes hello 2020-03-20 17:27:52 +01:00
Milka64 8094a7a65b add somes hello 2020-03-20 17:23:44 +01:00
Milka64 e0ace12372 add somes hello 2020-03-20 17:21:04 +01:00
BFlow 8d036b897a c'est la faute a Rémi ! 2020-03-20 15:21:20 +00:00
BFlow e816df9298 Bonjour messieurs, dames 2020-03-20 13:11:46 +00:00
BFlow 3fc08ff4e3 hey hooooooo ! 2020-03-20 13:03:55 +00:00
BFlow 0b06fd7297 Gifi des idees de genie 2020-03-20 10:29:45 +00:00
BFlow bf93366dd7 D'accord 2020-03-20 10:17:55 +00:00
BFlow ac02277a98 correct line command slap 2020-03-19 15:17:57 +01:00
Milka64 28ce692692 Merge branch 'master' of http://git.0w.tf/Milka64/kabot 2020-03-19 12:08:01 +01:00
Milka64 71efb092f1 test 2020-03-19 12:07:56 +01:00
BFlow e541aa9b3e add line command slap 2020-03-19 11:12:47 +01:00
BFlow 415b610f6a hummmmmmm 2020-03-17 14:22:22 +00:00
Milka64 3ff7c86431 fix repeat cmd 2020-03-15 22:28:53 +01:00
Milka64 d3bed5b996 Merge branch 'master' of http://git.0w.tf/Milka64/kabot 2020-03-15 22:21:59 +01:00
Milka64 fb6b265d06 fix repeat cmd 2020-03-15 22:21:53 +01:00
BFlow 1bc5f97f79 #1 add gif command 2020-03-15 22:18:29 +01:00
BFlow 49c5960a9c Merge remote-tracking branch 'origin/master' 2020-03-15 22:16:27 +01:00
BFlow 6352556f9e #1 add gif command 2020-03-15 22:16:16 +01:00
Milka64 f9e36be6a6 fix repeat cmd 2020-03-15 22:01:01 +01:00
BFlow 8ac8a390aa #1 add gif command 2020-03-15 21:54:19 +01:00
Milka64 6aa7ed372d fix repeat cmd 2020-03-15 21:30:15 +01:00
Milka64 089818e48c add repeat cmd 2020-03-15 21:12:40 +01:00
BFlow 2598511bf5 Upload New File 2020-03-15 15:19:44 +00:00
BFlow d454a1f685 Upload New File 2020-03-15 15:18:00 +00:00
BFlow e106184a48 Upload New File 2020-03-15 15:05:31 +00:00
BFlow ff767d2cc3 Upload New File 2020-03-15 15:02:23 +00:00
BFlow 2fb6165913 Upload New File 2020-03-12 22:18:43 +00:00
BFlow ba7ed1ab89 Upload New File 2020-03-12 22:15:43 +00:00
BFlow cb648cab52 OUF 2020-03-12 04:25:29 +00:00
BFlow 3b3925f669 UwU 2020-03-11 22:30:50 +00:00
BFlow df0db59646 hummmmmmmmmmm ca va chauffer dans les bermudas ! 2020-03-09 09:43:17 +00:00
BFlow d12222f9c9 hey jokerini !! 2020-03-09 09:42:44 +00:00
BFlow 8c6764cf9a gergnreguir 2020-03-09 09:41:28 +00:00
BFlow 92de407337 Upload New File 2020-03-03 20:25:13 +00:00
BFlow c84043189f Delete completement_con.mp3 2020-03-03 20:25:00 +00:00
BFlow 632f489d50 Upload New File 2020-03-03 19:58:24 +00:00
BFlow bb39c529a8 Upload New File 2020-03-03 19:58:17 +00:00
BFlow 915f3b8382 Delete ouais_ouais.mp3 2020-03-03 19:58:11 +00:00
BFlow a22346cc5d Delete ouais.mp3 2020-03-03 19:58:04 +00:00
BFlow 94b1c589e2 Replace ouais.mp3 2020-03-03 19:57:47 +00:00
BFlow 88c551c88d ouais ouais ! 2020-03-03 19:49:50 +00:00
BFlow 8e3a7c06f0 ouais ! 2020-03-03 19:47:55 +00:00
BFlow 995b95f54b i want to f*ck ur pu**y 2020-03-03 03:59:18 +00:00
BFlow 1001eb86f9 comme ca 2020-03-03 03:58:27 +00:00
BFlow 7f3c97d237 ah bah voila ! 2020-03-03 03:57:36 +00:00
BFlow 312def0cf7 Mais il est completement con ! 2020-03-03 03:33:40 +00:00
BFlow 11c9ac1937 tomber par terre fort ! 2020-03-03 03:33:02 +00:00
BFlow 425955c4db j'vais mettre du blanco 2020-03-03 03:32:37 +00:00
BFlow bd633427d8 j'vais te tuer jusqu'à ce que tu meurt ! 2020-03-03 03:17:35 +00:00
BFlow f705a23112 t nu nu nul aaa call offff duty ! 2020-03-03 03:16:40 +00:00
BFlow c662c314a5 LES PENIS !!!!!! 2020-03-01 20:08:20 +00:00
BFlow e7e5c104cd vroum vroum 2020-02-27 21:05:56 +00:00
BFlow 85c3143e37 Pti 2020-02-27 20:59:26 +00:00
BFlow fb795c757c vroum vroum 2020-02-27 20:58:43 +00:00
BFlow d7219ab754 BONSOUAR 2020-02-24 20:24:40 +00:00
BFlow 519bf41847 VOICI ma... 2020-02-12 00:43:15 +00:00
BFlow e616ea0853 PERDU 2020-02-12 00:42:50 +00:00
BFlow 9b4107b1c7 Detendre l'atmosphere 2020-02-12 00:18:33 +00:00
BFlow fcb4f40f1b ferme-la tete de con 2020-02-12 00:16:48 +00:00
BFlow 520f6368d3 Fermez-laaaaaaaaaaaaaaaaa 2020-02-12 00:16:07 +00:00
root 08318c93d6 New sounds 2020-02-04 14:21:57 +01:00
BFlow e9f4bda3d8 UwU 2020-02-01 17:37:30 +00:00
BFlow cebff905c9 pipe a papa 2020-01-31 20:26:19 +00:00
BFlow c2afae9696 moule biiiiiiiiiite 2020-01-29 22:30:40 +00:00
BFlow ffc4a7f849 Darty papa 2020-01-23 20:47:07 +00:00
BFlow 1b6ffbc083 Roulezeuh 2020-01-23 20:17:17 +00:00
BFlow d20f65b353 sssssssalope! 2020-01-22 18:48:01 +00:00
BFlow 28407c9b18 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah 2020-01-21 20:22:22 +00:00
BFlow f5d4a83b9b Team croquette 2020-01-11 19:14:02 +00:00
BFlow 43ca514388 CALOTTE DE SES MORTS 2020-01-11 19:13:27 +00:00
BFlow d91c994ecb Oui Oui 2020-01-06 18:29:27 +00:00
BFlow 4db2526863 Delete Jimmy.mp3 2020-01-06 18:29:01 +00:00
BFlow ea1657f5eb Upload New File 2020-01-06 18:28:36 +00:00
BFlow 5292c21497 Les kaka, les sosos, les kassos! 2020-01-06 18:28:09 +00:00
BFlow 961d2c89c3 welcome!!!! 2019-12-15 12:09:47 +00:00
BFlow 99ea7ed459 Pas tres correct ca ! 2019-12-07 01:12:42 +00:00
BFlow 327054ab2d un quoi ? 2019-11-26 17:05:18 +00:00
BFlow 439e8fec14 LACHATTE 2019-11-24 18:07:58 +00:00
BFlow 51743bc786 t'aime ça les patch! (commande slap) 2019-11-19 17:22:17 +01:00
BFlow 8807aeec95 Mais slap moi (repatch commande slap) 2019-11-19 17:14:30 +01:00
BFlow 72dbc404a9 Mais slap moi (patch commande slap) 2019-11-19 16:57:02 +01:00
Milka64 9681bb6067 try to fix sleep 2019-11-18 21:17:12 +01:00
Milka64 0f997c8168 try to fix auto slap 2019-11-18 17:12:44 +01:00
Milka64 4d404baedc fix sleep 2019-11-18 17:06:56 +01:00
Milka64 31be129a9e fix sleep 2019-11-18 17:04:01 +01:00
Milka64 2d81b2f81a clean slap command 2019-11-18 17:00:56 +01:00
BFlow 6ebeabaef0 extra slap 2019-11-18 16:55:26 +01:00
Milka64 d302775b13 randomise slap and kaamelott commandes 2019-11-17 20:18:46 +01:00
BFlow 2f5461f01f Gros doigts du papy 2019-11-17 20:13:32 +01:00
BFlow b27a9b00a7 correction de la commande slap 2019-11-17 20:10:10 +01:00
BFlow 957708785f fixe auto mutilation 2019-11-17 20:03:37 +01:00
BFlow 33d44c2395 auto mutilation 2019-11-17 20:00:47 +01:00
BFlow 111b96c5db choix d'user dans la fonction slap 2019-11-17 19:46:00 +01:00
BFlow 80321e8128 des strings par-ci des strings par-la 2019-11-17 19:09:43 +01:00
BFlow e654378e7a test filtre online 2019-11-17 19:04:02 +01:00
BFlow f016e6b5bd ya pas de nom 2019-11-17 18:56:34 +01:00
BFlow 7f981b8c67 papy est en difficulté 2019-11-17 18:54:02 +01:00
BFlow 68093c7abe test de la fonction slap 2019-11-17 18:47:20 +01:00
BFlow c552943a41 Merge remote-tracking branch 'origin/master' 2019-11-17 18:18:46 +01:00
BFlow 713c694d03 ajout commande slap et clean code 2019-11-17 18:18:12 +01:00
BFlow b7474bbf17 woops 2019-11-16 18:59:31 +00:00
BFlow 5eed8bab06 ajout de la commande lines 2019-11-16 18:37:10 +01:00
BFlow 770792a5bd correction volume 2019-11-16 15:52:23 +00:00
BFlow 4c8d6245ad mettre les choses en double s'pas ouf! 2019-11-16 15:51:21 +00:00
BFlow 7036843b8c en plus il est deux fois 2019-11-16 14:00:14 +00:00
BFlow baf37a4b25 peu être cette fois 2019-11-16 12:44:25 +00:00
BFlow c922bb6256 bah non c'est pas la bonne 2019-11-16 12:43:58 +00:00
BFlow cef7424174 cette fois c'est la bonne 2019-11-16 12:42:43 +00:00
BFlow 287b1e6202 correction 2019-11-16 12:41:53 +00:00
BFlow 15691b7463 je l'aurais un jour 2019-11-16 12:39:38 +00:00
BFlow 5b181863e6 moins moins moins fort 2019-11-16 12:38:32 +00:00
BFlow 37a29e0133 moins moins fort 2019-11-16 12:36:14 +00:00
BFlow 7f843aa379 moins fort 2019-11-16 12:34:38 +00:00
BFlow 6838780e7d ya pas l'image aussi c'est tjs aussi nul 2019-11-16 10:56:35 +00:00
BFlow 6d9cda6669 ya pas l'image c'est nul 2019-11-16 10:56:01 +00:00
BFlow 0d7a7aa849 Je sers a rien 2019-11-15 20:48:58 +00:00
BFlow 3f1d2b3cea commit de test 2019-11-15 21:40:25 +01:00
BFlow e20a843e49 Replace benben10.mp3 2019-11-14 21:48:02 +00:00
BFlow 230791a638 LES 2019-11-14 21:39:29 +00:00
BFlow 16c500d598 Replace zuzen7.mp3 en mieu 2019-11-14 20:15:51 +00:00
BFlow 24278dd390 chut 2019-11-14 19:14:57 +00:00
Administrator a97259338d Surprise 2 ;-) 2019-11-08 22:55:58 +01:00
Administrator 4b155b3594 Surprise ;-) 2019-11-08 22:27:06 +01:00
Milka64 07e2ac607e fix log 2019-11-08 17:04:53 +01:00
BFlow 901119008f =) 2019-11-07 02:39:49 +00:00
BFlow 9fef8aa56c random sons 2019-11-07 02:23:31 +00:00
Milka64 28391d3998 add emile sound 2019-11-06 22:45:27 +01:00
BFlow 97c5b43b69 moins fort 2019-11-06 21:09:11 +00:00
Milka64 87f1f7af00 fix guild_only && add jean-michel sound 2019-11-06 22:01:06 +01:00
BFlow 3c64624d0d new sound remi 2019-10-21 13:25:20 +00:00
Administrator 1a2a4bd9da remy add 2019-10-19 22:06:41 +02:00
Milka64 e560682d99 test auto audio 2019-10-19 15:54:32 +00:00
Michael Ricart c947c1057d rename peepoodo 2019-10-18 17:03:39 +02:00
Milka64 8e0023be1d add random joke in crontab && joke can find keyword match 2019-10-18 16:34:44 +02:00
BFlow 0f40126348 Upload sound kad et olivier 2019-10-18 14:33:37 +00:00
BFlow 91dab5b70e correction 2019-10-18 14:33:08 +00:00
BFlow f7f080bd38 Upload sound kad et olivier 2019-10-18 13:18:19 +00:00
BFlow 106e726e42 Upload sound kad et olivier 2019-10-18 13:18:10 +00:00
BFlow 70c9a3a108 Upload sound kad et olivier 2019-10-18 13:17:59 +00:00
BFlow 3bbf56a96f Upload sound kad et olivier 2019-10-18 13:17:49 +00:00
BFlow e48327c3c8 Upload sound kad et olivier 2019-10-18 13:17:34 +00:00
BFlow 6b7ac6e50b Upload sound kad et olivier 2019-10-18 13:17:23 +00:00
BFlow 1ad3a1ce45 Upload sound kad et olivier 2019-10-18 13:17:12 +00:00
BFlow eca5e00068 Upload sound kad et olivier 2019-10-18 13:17:01 +00:00
BFlow 965833e19e Upload sound kad et olivier 2019-10-18 13:16:48 +00:00
BFlow da26150fe2 Upload sound kad et olivier 2019-10-18 13:16:37 +00:00
BFlow cbfd7cd59c Upload sound kad et olivier 2019-10-18 13:16:15 +00:00
BFlow 8f658d9afd Upload sound kad et olivier 2019-10-18 13:16:06 +00:00
BFlow 194a0e2a68 Upload sound kad et olivier 2019-10-18 13:15:55 +00:00
BFlow e3701f4e14 Upload sound kad et olivier 2019-10-18 13:15:42 +00:00
BFlow 0f6329098a Upload sound kad et olivier 2019-10-18 13:15:31 +00:00
BFlow 5733998f88 Upload sound kad et olivier 2019-10-18 13:15:18 +00:00
BFlow 83860bf3e6 Upload sound kad et olivier 2019-10-18 13:15:07 +00:00
BFlow f3a978081c Upload sound kad et olivier 2019-10-18 13:14:41 +00:00
BFlow fa31518100 Upload sound kad et olivier 2019-10-18 13:14:17 +00:00
BFlow 82d9e00d3b Upload sound kad et olivier 2019-10-18 13:14:02 +00:00
BFlow e410034883 Upload sound kad et olivier 2019-10-18 13:13:48 +00:00
BFlow 0e07e3acc0 Upload sound kadetoliver 2019-10-18 13:13:05 +00:00
BFlow a99b6e4bbe Add Kad et Olivier 2019-10-18 13:11:40 +00:00
BFlow 28a0b053a9 Upload sound 2019-10-17 11:51:36 +00:00
BFlow 1a625d257e new sound 2019-10-12 00:04:23 +00:00
Milka64 647153a9f1 add kaamelott & peepoodo 2019-10-11 15:31:14 +02:00
Milka64 c3bb2d64b7 add sound queue & clean code & remove old mp3 2019-10-11 12:04:43 +02:00
Administrator 3ac51ab6db grocosto 2019-10-10 23:11:48 +02:00
Administrator 21b7680bfc mv 2019-10-10 22:19:54 +02:00
Administrator 3e2aa4e8af mv 2019-10-10 22:18:12 +02:00
Administrator 524ebc72a3 mv 2019-10-10 22:15:17 +02:00
Administrator f984bab3c6 mv 2019-10-10 22:07:22 +02:00
Administrator 74c7509522 Merge branch 'master' of http://git.0w.tf/Milka64/kabot 2019-10-10 22:00:02 +02:00
Administrator ddad8fd7d8 mv 2019-10-10 21:59:40 +02:00
Milka64 c10a91e9da add cron command 2019-10-08 16:21:29 +02:00
Administrator afe379120c rename 2019-10-08 09:54:55 +02:00
Administrator 03abb9bbc1 ajout mp3 2019-10-07 20:57:02 +02:00
BFlow 00ba80e3a0 fix zuzen4.mp3 2019-10-07 13:58:56 +00:00
BFlow 53f71619ad Upload New File 2019-10-04 14:49:18 +00:00
BFlow 42475498d9 Add sound 2019-10-04 12:24:51 +00:00
BFlow ebbe1f6b3f Add new directory 2019-10-04 12:24:02 +00:00
BFlow 5aa727ac9a Upload New File 2019-10-04 10:13:05 +00:00
BFlow 5fba6d66ef Add new directory 2019-10-04 10:11:01 +00:00
Michael Ricart 0e0249fc32 fix benben3 2019-10-04 11:03:46 +02:00
Michael Ricart 8dcd30836f add sounds 2019-10-04 10:59:16 +02:00
Michael Ricart b7b4e225b8 add somes songs 2019-10-04 10:57:19 +02:00
Michael Ricart fab2cefdc0 add BFlow sounds 2019-10-04 10:12:52 +02:00
Milka64 011d363aca Update __init__.py 2019-10-03 12:05:20 +00:00
Milka64 a3cd80ba8e add autojoin, restart, update && test 2019-10-03 14:04:27 +02:00
BFlow 506de7133e Upload New File 2019-10-03 09:48:05 +00:00
BFlow d506b9d13f Add new directory 2019-10-03 09:47:55 +00:00
Milka64 509b6a6a42 add welcome command 2019-10-02 20:59:23 +02:00
BFlow 34d063dfeb Upload New File 2019-10-02 18:05:25 +00:00
BFlow 0d80ccd86a Upload New File 2019-10-02 18:05:08 +00:00
BFlow d0289764c2 Upload New File 2019-10-02 18:04:53 +00:00
BFlow 3e274d6367 Upload New File 2019-10-02 18:04:39 +00:00
BFlow f060572e80 Upload New File 2019-10-02 18:04:24 +00:00
BFlow f9dab8dfaf Upload New File 2019-10-02 18:03:59 +00:00
BFlow a7a14b215d Upload New File 2019-10-02 18:03:46 +00:00
BFlow c29a569f65 Upload New File 2019-10-02 18:03:24 +00:00
BFlow 152c8b922c Add new directory 2019-10-02 17:58:16 +00:00
BFlow 1ac4822e66 Add new directory 2019-10-02 17:57:55 +00:00
BFlow b59a0af357 Add new directory 2019-10-02 17:57:43 +00:00
BFlow d3c371dd15 Add new directory 2019-10-02 17:57:28 +00:00
Milka64 22d74f2805 fix boulette 2019-10-02 19:56:52 +02:00
BFlow 74129fb754 Add new directory 2019-10-02 17:54:42 +00:00
BFlow 3fc3baacd1 Add new directory 2019-10-02 17:53:41 +00:00
BFlow 48378696a3 Add new directory 2019-10-02 17:53:27 +00:00
BFlow 077056cd1b Add new directory 2019-10-02 17:53:19 +00:00
BFlow 3a919b81eb Add new directory 2019-10-02 17:52:46 +00:00
31 changed files with 2076 additions and 482 deletions

2
.gitignore vendored
View file

@ -76,7 +76,7 @@ docs/make.bat
dev.cfg dev.cfg
prod.cfg prod.cfg
exploit_overrides.cfg exploit_overrides.cfg
buildout.cfg #buildout.cfg
config.ini config.ini
mr-dev/* mr-dev/*
.mr.developer.cfg .mr.developer.cfg

29
.gitlab-ci.yml Normal file
View file

@ -0,0 +1,29 @@
stages:
- login
- build
- push
- deploy
variables:
GL_TOKEN: $GL_TOKEN
VERSION: '0.2.18'
deploy:
stage: deploy
script : sudo docker-compose --env-file /data/docker/compose-files/others.env -f /data/docker/compose-files/others.yml up -d
build:
stage: build
script:
- sudo docker build -t hub.0w.tf/milka64/kabot:$VERSION .
- sudo docker build -t hub.0w.tf/milka64/kabot:latest .
push:
stage: push
script:
- sudo docker push hub.0w.tf/milka64/kabot:$VERSION
- sudo docker push hub.0w.tf/milka64/kabot:latest
login:
stage: login
script: sudo docker login -u milka64 -p $GL_TOKEN hub.0w.tf

Binary file not shown.

12
Dockerfile Normal file
View file

@ -0,0 +1,12 @@
FROM python:3.11
WORKDIR /usr/src/kabot
ENV CONFIG_FILE=/data/config.ini
COPY kabot ./
COPY config.ini.sample /data/config.ini
COPY entrypoint.sh /
RUN apt update && apt install -y ffmpeg
RUN apt clean
RUN pip install --no-cache-dir /usr/src/kabot/
CMD [ "/entrypoint.sh" ]

View file

@ -10,7 +10,7 @@ Prerquire :
pip3 install zc.buildout pip3 install zc.buildout
clone this repositori, then : clone this repository, then :
.. code-block:: bash .. code-block:: bash
@ -22,4 +22,34 @@ Utilisation
.. code-block:: bash .. code-block:: bash
./bin/kabot ./bin/kabot -c config.ini
Configuration
-------------
.. code-block:: ini
[DEFAULT]
audio_path = /tmp/
voice_channel = channel_name
text_channel = channel_name
[discord]
token = <discord_token>
[gitlab]
url = https://gitlab.example.com/
token = <GITLAB_TOKEN>
[giphy]
token = <GIPHY_TOKEN>
Docker
------
.. code-block:: bash
docker build -t kabot .
docker run -v /pa/to/your/data:/data kabot:latest

View file

@ -1,210 +0,0 @@
##############################################################################
#
# Copyright (c) 2006 Zope Foundation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""Bootstrap a buildout-based project
Simply run this script in a directory containing a buildout.cfg.
The script accepts buildout command-line options, so you can
use the -c option to specify an alternate configuration file.
"""
import os
import shutil
import sys
import tempfile
from optparse import OptionParser
__version__ = '2015-07-01'
# See zc.buildout's changelog if this version is up to date.
tmpeggs = tempfile.mkdtemp(prefix='bootstrap-')
usage = '''\
[DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options]
Bootstraps a buildout-based project.
Simply run this script in a directory containing a buildout.cfg, using the
Python that you want bin/buildout to use.
Note that by using --find-links to point to local resources, you can keep
this script from going over the network.
'''
parser = OptionParser(usage=usage)
parser.add_option("--version",
action="store_true", default=False,
help=("Return bootstrap.py version."))
parser.add_option("-t", "--accept-buildout-test-releases",
dest='accept_buildout_test_releases',
action="store_true", default=False,
help=("Normally, if you do not specify a --version, the "
"bootstrap script and buildout gets the newest "
"*final* versions of zc.buildout and its recipes and "
"extensions for you. If you use this flag, "
"bootstrap and buildout will get the newest releases "
"even if they are alphas or betas."))
parser.add_option("-c", "--config-file",
help=("Specify the path to the buildout configuration "
"file to be used."))
parser.add_option("-f", "--find-links",
help=("Specify a URL to search for buildout releases"))
parser.add_option("--allow-site-packages",
action="store_true", default=False,
help=("Let bootstrap.py use existing site packages"))
parser.add_option("--buildout-version",
help="Use a specific zc.buildout version")
parser.add_option("--setuptools-version",
help="Use a specific setuptools version")
parser.add_option("--setuptools-to-dir",
help=("Allow for re-use of existing directory of "
"setuptools versions"))
options, args = parser.parse_args()
if options.version:
print("bootstrap.py version %s" % __version__)
sys.exit(0)
######################################################################
# load/install setuptools
try:
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen
ez = {}
if os.path.exists('ez_setup.py'):
exec(open('ez_setup.py').read(), ez)
else:
exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez)
if not options.allow_site_packages:
# ez_setup imports site, which adds site packages
# this will remove them from the path to ensure that incompatible versions
# of setuptools are not in the path
import site
# inside a virtualenv, there is no 'getsitepackages'.
# We can't remove these reliably
if hasattr(site, 'getsitepackages'):
for sitepackage_path in site.getsitepackages():
# Strip all site-packages directories from sys.path that
# are not sys.prefix; this is because on Windows
# sys.prefix is a site-package directory.
if sitepackage_path != sys.prefix:
sys.path[:] = [x for x in sys.path
if sitepackage_path not in x]
setup_args = dict(to_dir=tmpeggs, download_delay=0)
if options.setuptools_version is not None:
setup_args['version'] = options.setuptools_version
if options.setuptools_to_dir is not None:
setup_args['to_dir'] = options.setuptools_to_dir
ez['use_setuptools'](**setup_args)
import setuptools
import pkg_resources
# This does not (always?) update the default working set. We will
# do it.
for path in sys.path:
if path not in pkg_resources.working_set.entries:
pkg_resources.working_set.add_entry(path)
######################################################################
# Install buildout
ws = pkg_resources.working_set
setuptools_path = ws.find(
pkg_resources.Requirement.parse('setuptools')).location
# Fix sys.path here as easy_install.pth added before PYTHONPATH
cmd = [sys.executable, '-c',
'import sys; sys.path[0:0] = [%r]; ' % setuptools_path +
'from setuptools.command.easy_install import main; main()',
'-mZqNxd', tmpeggs]
find_links = os.environ.get(
'bootstrap-testing-find-links',
options.find_links or
('http://downloads.buildout.org/'
if options.accept_buildout_test_releases else None)
)
if find_links:
cmd.extend(['-f', find_links])
requirement = 'zc.buildout'
version = options.buildout_version
if version is None and not options.accept_buildout_test_releases:
# Figure out the most recent final version of zc.buildout.
import setuptools.package_index
_final_parts = '*final-', '*final'
def _final_version(parsed_version):
try:
return not parsed_version.is_prerelease
except AttributeError:
# Older setuptools
for part in parsed_version:
if (part[:1] == '*') and (part not in _final_parts):
return False
return True
index = setuptools.package_index.PackageIndex(
search_path=[setuptools_path])
if find_links:
index.add_find_links((find_links,))
req = pkg_resources.Requirement.parse(requirement)
if index.obtain(req) is not None:
best = []
bestv = None
for dist in index[req.project_name]:
distv = dist.parsed_version
if _final_version(distv):
if bestv is None or distv > bestv:
best = [dist]
bestv = distv
elif distv == bestv:
best.append(dist)
if best:
best.sort()
version = best[-1].version
if version:
requirement = '=='.join((requirement, version))
cmd.append(requirement)
import subprocess
if subprocess.call(cmd) != 0:
raise Exception(
"Failed to execute command:\n%s" % repr(cmd)[1:-1])
######################################################################
# Import and run buildout
ws.add_entry(tmpeggs)
ws.require(requirement)
import zc.buildout.buildout
if not [a for a in args if '=' not in a]:
args.append('bootstrap')
# if -c was provided, we push it back into args for buildout' main function
if options.config_file is not None:
args[0:0] = ['-c', options.config_file]
zc.buildout.buildout.main(args)
shutil.rmtree(tmpeggs)

16
config.ini.sample Normal file
View file

@ -0,0 +1,16 @@
[DEFAULT]
logs = /var/log/kabot.log
audio_path = /tmp/
voice_channel = channel_name
text_channel = channel_name
[discord]
token = <discord_token>
[gitlab]
url = https://gitlab.example.com/
token = <GITLAB_TOKEN>
[giphy]
token = <GIPHY_TOKEN>

3
entrypoint.sh Executable file
View file

@ -0,0 +1,3 @@
#!/bin/sh
kabot -c $CONFIG_FILE

View file

@ -1,15 +0,0 @@
* Kabot version:
* Python version:
* Operating System:
### Description
Describe what you were trying to get done.
Tell us what happened, what went wrong, and what you expected to happen.
### What I Did
```
Paste the command(s) you ran and the output.
If there was a crash, please include the traceback here.
```

View file

@ -3,6 +3,7 @@ include CONTRIBUTING.rst
include HISTORY.rst include HISTORY.rst
include LICENSE include LICENSE
include README.rst include README.rst
include kabot/utils/ressources/*
recursive-include tests * recursive-include tests *
recursive-exclude * __pycache__ recursive-exclude * __pycache__

View file

@ -1,88 +0,0 @@
.PHONY: clean clean-test clean-pyc clean-build docs help
.DEFAULT_GOAL := help
define BROWSER_PYSCRIPT
import os, webbrowser, sys
try:
from urllib import pathname2url
except:
from urllib.request import pathname2url
webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1])))
endef
export BROWSER_PYSCRIPT
define PRINT_HELP_PYSCRIPT
import re, sys
for line in sys.stdin:
match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line)
if match:
target, help = match.groups()
print("%-20s %s" % (target, help))
endef
export PRINT_HELP_PYSCRIPT
BROWSER := python -c "$$BROWSER_PYSCRIPT"
help:
@python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST)
clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts
clean-build: ## remove build artifacts
rm -fr build/
rm -fr dist/
rm -fr .eggs/
find . -name '*.egg-info' -exec rm -fr {} +
find . -name '*.egg' -exec rm -f {} +
clean-pyc: ## remove Python file artifacts
find . -name '*.pyc' -exec rm -f {} +
find . -name '*.pyo' -exec rm -f {} +
find . -name '*~' -exec rm -f {} +
find . -name '__pycache__' -exec rm -fr {} +
clean-test: ## remove test and coverage artifacts
rm -fr .tox/
rm -f .coverage
rm -fr htmlcov/
rm -fr .pytest_cache
lint: ## check style with flake8
flake8 kabot tests
test: ## run tests quickly with the default Python
python setup.py test
test-all: ## run tests on every Python version with tox
tox
coverage: ## check code coverage quickly with the default Python
coverage run --source kabot setup.py test
coverage report -m
coverage html
$(BROWSER) htmlcov/index.html
docs: ## generate Sphinx HTML documentation, including API docs
rm -f docs/kabot.rst
rm -f docs/modules.rst
sphinx-apidoc -o docs/ kabot
$(MAKE) -C docs clean
$(MAKE) -C docs html
$(BROWSER) docs/_build/html/index.html
servedocs: docs ## compile the docs watching for changes
watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D .
release: dist ## package and upload a release
twine upload dist/*
dist: clean ## builds source and wheel package
python setup.py sdist
python setup.py bdist_wheel
ls -l dist
install: clean ## install the package to the active Python's site-packages
python setup.py install

View file

@ -1,6 +1,8 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Top-level package for Kabot.""" """
Top-level package for Kabot.
"""
__author__ = """Michaël Ricart""" __author__ = """Michaël Ricart"""
__email__ = 'michael.ricart@0w.tf' __email__ = 'michael.ricart@0w.tf'

View file

@ -1,106 +1,101 @@
# -*- coding: utf-8 -*- # This example requires the 'message_content' privileged intent to function.
"""Main module.""" import asyncio
import random
import discord import discord
import yt_dlp as youtube_dl
from discord.ext import commands from discord.ext import commands
from kabot.utils.audio import *
import os from kabot.utils.texte import *
import requests
class Mybot(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.command()
async def join(self, ctx):
channel = [x for x in self.bot.get_all_channels() if x.name == "Général"][0]
await channel.connect()
@commands.command()
async def disconnect(self, ctx):
await ctx.guild.voice_client.disconnect()
@commands.command()
async def benjamin(self, ctx):
source = discord.PCMVolumeTransformer(discord.FFmpegPCMAudio("/tmp/Benjamin_Prejent.mp3"))
ctx.voice_client.play(source, after=lambda e: print('Player error: %s' % e) if e else None)
await ctx.send('Now playing')
@commands.command(help='check if bot always online')
async def ping(self, message):
await message.channel.send('pong')
@commands.command(help="optionnal args : [livre] [character]")
async def kaamelott(self, ctx, *args):
response = None
if not args:
url = 'https://kaamelott.chaudie.re/api/random'
else:
args = list(args)
if args[0].isdigit():
livre = int(args[0])
args.pop(0)
elif args[-1].isdigit():
livre = int(args[-1])
args.pop(-1)
else:
livre = None
if args:
perso = ' '.join(args)
if perso and livre:
url = 'https://kaamelott.chaudie.re/api/random/livre/%s/personnage/%s' % (livre,perso)
elif perso:
url = 'https://kaamelott.chaudie.re/api/random/personnage/%s' % perso
else:
url = 'https://kaamelott.chaudie.re/api/random/livre/%s' % livre
try:
citation = requests.get(url).json()['citation']
response = "%s :\n```\n%s\n```" % (citation['infos']['personnage'], citation['citation'])
except:
response = "Unknow error, try: !kaamelott [livre] [character]"
await ctx.send(response)
def main():
token = "NjI3MTM3NDY1MDA5ODMxOTQ2.XY4Raw.pw8sAen3bNR5aYsoTChQOudM0L8" intents = discord.Intents.all()
bot = commands.Bot(command_prefix='!') intents.message_content = True
bot = commands.Bot(
command_prefix="!",
description='''A ROULEEEEETTES !!
HOULA... J'l'ai un peu trop gueulé ça, non ?
A roulettes.''',
intents=intents,
)
@bot.event @bot.event
async def on_message(message): async def on_ready():
print(message.content) print(f'Logged in as {bot.user} (ID: {bot.user.id})')
if message.author == bot.user: print('------')
return
async def main():
## création de l'objet logger
logger = logging.getLogger()
## definition du log level
logger.setLevel(logging.INFO)
parser = argparse.ArgumentParser()
parser.add_argument(
"-c",
"--config",
help="config file",
default="config.ini"
)
args = parser.parse_args()
config = configparser.ConfigParser()
if not os.path.exists(args.config):
logger.critical('config file not found')
exit(1)
config.read(args.config)
log_file = config['DEFAULT']['logs']
## definition du fichier de log (chemin, level, etc ...)
formatter = logging.Formatter('%(asctime)s :: %(levelname)s :: %(message)s')
file_handler = RotatingFileHandler(log_file, 'a', 1000000, 1)
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
if "nickname" in config['DEFAULT']:
nickname = config['DEFAULT']['nickname']
else: else:
if bot.user in message.mentions \ nickname = None
and len(message.mentions) < 3 \ if "voice_channel" in config['DEFAULT']:
and len(message.content.splitlines()) == 1: voice_channel = config['DEFAULT']['voice_channel']
path = '/tmp/%s.log' % message.channel else:
with open(path, 'r') as f : voice_channel = None
lines = f.read().splitlines() if "text_channel" in config['DEFAULT']:
if not message.content in lines: text_channel = config['DEFAULT']['text_channel']
with open(path, 'a') as f : else:
f.write(message.content + '\n') text_channel = None
response = random.choice(lines).replace(str(bot.user.id), str(message.author.id)) audio_path = config['DEFAULT']['audio_path']
await message.channel.send(response) token = config['discord']['token']
await bot.process_commands(message) gl_url = config['gitlab']['url']
gl_token = config['gitlab']['token']
@bot.event gif_token = config['giphy']['token']
async def on_voice_state_update(member,before,after): async with bot:
if "BFlow" in member.name: await bot.add_cog(
if before.channel is None and after.channel: Audio(
for channel in bot.get_all_channels(): bot,
if channel.name == "général": voice_chan=voice_channel,
current_chan = channel text_chan=text_channel,
ctx = bot.get_context(current_chan.last_message) audio_path=audio_path,
benjamin = bot.get_command('benjamin') )
await benjamin.invoke(ctx) )
await bot.add_cog(
bot.add_cog(Mybot(bot)) Texte(
bot.run(token) bot,
gif_token=gif_token,
gl_token=gl_token,
gl_url=gl_url,
text_chan=text_channel,
)
)
await bot.start(token)
def run():
asyncio.run(main())
if __name__ == "__main__": if __name__ == "__main__":
main() run()

View file

@ -0,0 +1 @@
##

317
kabot/kabot/utils/audio.py Normal file
View file

@ -0,0 +1,317 @@
# This example requires the 'message_content' privileged intent to function.
import asyncio
import discord
import yt_dlp as youtube_dl
import random
import os
from discord.ext import commands, tasks
from pathlib import Path
# Suppress noise about console usage from errors
youtube_dl.utils.bug_reports_message = lambda: ''
ytdl_format_options = {
'format': 'bestaudio/mp3',
'outtmpl': '/tmp/discord_%(title)s-%(id)s.%(ext)s',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}]
}
ffmpeg_options = {
'options': '-vn',
}
ytdl = youtube_dl.YoutubeDL(ytdl_format_options)
class YTDLSource(discord.PCMVolumeTransformer):
def __init__(self, source, *, data, volume=0.5):
super().__init__(source, volume)
self.data = data
self.title = data.get('title')
self.url = data.get('url')
@classmethod
async def from_url(cls, url, *, loop=None, stream=False):
loop = loop or asyncio.get_event_loop()
data = await loop.run_in_executor(None, lambda: ytdl.extract_info(url, download=not stream))
if 'entries' in data:
# take first item from a playlist
data = data['entries'][0]
filename = data['url'] if stream else ytdl.prepare_filename(data)
extension = filename.split('.')[-1]
filename = filename.replace(extension, 'mp3')
return cls(discord.FFmpegPCMAudio(filename, **ffmpeg_options), data=data)
@classmethod
async def from_file(cls, audio_file, ctx, *, loop=None, stream=False):
source = discord.PCMVolumeTransformer(discord.FFmpegPCMAudio(audio_file,**ffmpeg_options))
ctx.voice_client.play(source, after=lambda e: print('Player error: %s' % e) if e else None)
class Audio(commands.Cog, name="Commandes Audio"):
def __init__(
self,
bot,
audio_path=None,
voice_chan=None,
text_chan=None):
self.bot = bot
self.sounds = []
self.voice_chan = voice_chan
self.text_chan = text_chan
self.audio_path = audio_path
self.sounds_history = []
@commands.Cog.listener()
async def on_voice_state_update(self, member, before, after):
if before.channel is None and after.channel:
for channel in self.bot.get_all_channels():
if channel.name == self.text_chan:
current_chan = channel
async for msg in current_chan.history(limit=1):
last_message = msg
ctx = await self.bot.get_context(last_message)
ctx.message.author = member
#welcome = bot.get_command('welcome')
await asyncio.sleep(2)
await self.welcome(ctx, member.display_name)
@commands.Cog.listener()
async def on_ready(self):
self.play_next.start()
self.pipelette.start()
if self.voice_chan:
await self.join(self.voice_chan)
#await self.welcome(None, 'kabot')
@commands.command(help="Toi tu fermes ta gueule! Tu la fermes définitivement")
async def mute(self, ctx, member: discord.Member=None, mute_time = 10):
if member.voice.mute:
async with ctx.channel.typing():
await asyncio.sleep(1)
await ctx.channel.send("Tu ne vas pas m'avoir si facilement")
return
if not member:
async with ctx.channel.typing():
await asyncio.sleep(1)
await ctx.channel.send("Qui veux-tu mute?")
return
if mute_time > 60:
async with ctx.channel.typing():
await asyncio.sleep(1)
await ctx.channel.send("Doucement sur le temps!")
return
member = ctx.message.mentions[0]
await member.edit(mute=True)
async with ctx.channel.typing():
await asyncio.sleep(1)
await ctx.send("Tu sors %s!" % member.mention)
await asyncio.sleep(mute_time)
await member.edit(mute=False)
async with ctx.channel.typing():
await asyncio.sleep(1)
await ctx.channel.send("Tu peux reparler %s!" % member.mention)
@commands.command(help="Appuie sur la detente PUSSY!")
async def roulette(self, ctx):
mute_time = 60
member = ctx.message.author
if not member.voice:
async with ctx.typing():
await ctx.channel.send("You're not in voice channel")
return
barillet = [False, False, True, False, False]
bullet = random.choice(barillet)
await self.joke(ctx, "spinning_and_closed.mp3")
if bullet == True:
await self.joke(ctx, "omawa_shindeiru.mp3")
await asyncio.sleep(2)
await member.edit(mute=True)
async with ctx.typing():
await asyncio.sleep(3)
await ctx.channel.send("Perdu, tu es mute pendant 60 secondes!")
else:
await self.joke(ctx, "hammer_and_dry.mp3")
async with ctx.typing():
await asyncio.sleep(3)
await ctx.channel.send("Gagné, tu ne seras pas mute!")
return
await asyncio.sleep(mute_time)
await member.edit(mute=False)
async with ctx.typing():
await asyncio.sleep(0.5)
await ctx.channel.send("Tu peux reparler %s!" % member.mention)
@tasks.loop(seconds=300)
async def pipelette(self):
for channel in self.bot.get_all_channels():
if channel.name == self.voice_chan and\
len(channel.members) > 1 and\
random.choice([True,True,True]):
for chan in self.bot.get_all_channels():
if chan.name == self.text_chan:
current_chan = chan
await asyncio.sleep(random.choice(range(305)))
async for msg in current_chan.history(limit=1):
last_message = msg
ctx = await self.bot.get_context(last_message)
ctx.message.content = ""
await self.joke(ctx)
@tasks.loop(seconds=1)
async def play_next(self):
connected_voice = [chan for chan in self.bot.voice_clients if chan.is_connected()]
if connected_voice:
if not [chan for chan in connected_voice if chan.is_playing()]:
if self.sounds:
audio_type, audio_file, ctx = self.sounds[0]
if 'url' in audio_type:
player = await YTDLSource.from_url(audio_file, loop=self.bot.loop)
ctx.voice_client.play(player, after=lambda e: print(f'Player error: {e}') if e else None)
elif 'file' in audio_type:
player = await YTDLSource.from_file(audio_file, ctx)
last_audio = self.sounds.pop(0)
self.sounds_history.reverse()
self.sounds_history.append(last_audio)
self.sounds_history.reverse()
if len(self.sounds_history) > 5:
self.sounds_history = self.sounds_history[:5]
@commands.command(help='Troll commands', hidden=True)
async def okre(self, ctx):
await self.joke(ctx, "tu_dois_tout_donner.mp3")
@commands.command(help='Clear sound queue')
async def clear(self, ctx):
self.sounds = []
@commands.command()
async def welcome(self, ctx, user=None):
"""Joue le son d'accueil de l'utilisateur"""
if not user:
user = ctx.message.author.name
try:
audio_file = random.choice([f for f in os.listdir(self.audio_path + '%s/' % user) if f.endswith('.mp3')])
audio_file = self.audio_path + '/%s/' % user + audio_file
except:
audio_file = random.choice([f for f in Path(self.audio_path + '/').glob('**/*.mp3')])
self.sounds.append(('file', audio_file, ctx))
@commands.command()
async def repeat(self, ctx):
"""Rejouer le dernier son joué"""
user = ctx.message.author.name
source = self.sounds_history[0]
self.sounds.append(source)
@commands.command(help="detail du dernier son joué")
async def last(self, ctx, number = 1):
number = int(number)
for sound in self.sounds_history[0:number]:
await ctx.channel.send("```"+str(sound[1])+"```")
@commands.command()
async def join(self, chan_name: discord.VoiceChannel):
"""Joins a voice channel"""
#if ctx.voice_client is not None:
# return await ctx.voice_client.move_to(channel)
channel = [x for x in self.bot.get_all_channels() if x.name == chan_name][0]
return await channel.connect()
await channel.connect()
@commands.command()
async def play(self, ctx, *, url):
"""Plays from a url (almost anything youtube_dl supports)"""
self.sounds.append(('url',url,ctx))
@commands.command()
async def stream(self, ctx, *, url):
"""Streams from a url (same as yt, but doesn't predownload)"""
async with ctx.typing():
player = await YTDLSource.from_url(url, loop=self.bot.loop, stream=True)
ctx.voice_client.play(player, after=lambda e: print(f'Player error: {e}') if e else None)
await ctx.send(f'Now playing: {player.title}')
@commands.command()
async def stop(self, ctx):
"""Stoppe la lecture en cours"""
await ctx.voice_client.stop()
@commands.command()
async def volume(self, ctx, volume: int):
"""Changes the player's volume"""
if ctx.voice_client is None:
return await ctx.send("Not connected to a voice channel.")
ctx.voice_client.source.volume = volume / 100
await ctx.send(f"Changed volume to {volume}%")
@commands.command()
async def leave(self, ctx):
"""Stops and disconnects the bot from voice"""
await ctx.voice_client.disconnect()
@commands.command()
async def find(self, ctx, query):
"""Cherche un son dans la bibliothèque (5 resultat max)"""
query = query.lower()
audio_files = [f for f in Path(self.audio_path + '/').glob('**/*.mp3') if query in str(f).lower()]
if not audio_files:
await ctx.channel.send("%s not found" % query)
else:
for file in audio_files[:6]:
await ctx.channel.send("```"+str(file)+"```")
@commands.command()
async def joke(self, ctx, folder=None):
"""Joue un son (aléatoire par défaut)"""
try:
user = ctx.message.author.name
if not folder or not ctx.message.content:
audio_file = random.choice([f"{f}" for f in Path(self.audio_path + '/').glob('**/*.mp3')])
elif folder:
folder = folder.lower()
audio_files = [f for f in Path(self.audio_path + '/').glob('**/*.mp3') if folder in str(f).lower()]
if not audio_files:
await ctx.channel.send("%s not found" % folder)
return
else:
audio_file = random.choice(audio_files)
self.sounds.append(('file', audio_file, ctx))
except:
e = exc_info()[0]
await ctx.channel.send("Exception when calling joke: %s\n" % e)
@play.before_invoke
@joke.before_invoke
@repeat.before_invoke
@stream.before_invoke
async def ensure_voice(self, ctx):
if ctx.voice_client is None:
if ctx.author.voice:
await ctx.author.voice.channel.connect()
else:
await ctx.send("You are not connected to a voice channel.")
raise commands.CommandError("Author not connected to a voice channel.")
elif ctx.voice_client.is_playing():
pass

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,100 @@
Il faudrait une bonne purge à cette vaisselle!;Il faudrait une bonne verge à cette pucelle!
Ma belle-mère admire les rossignols du caroubier. ;Ma belle-mère admire les roubignolles du carossier.
Votre père a l'air mutin. ;Votre mère a l'air putain.
L'Empereur est arrivé à pied par la Chine.;L'Empereur est arrivé à chier par la pinne.
Est-ce un feu de poutre? ;Est-ce un peu de foutre?
Mammouth écrase les prix. ;Mammie écrase les prouts.
C'est ici qu'on pendit le fuselage de l'aviatrice.;C'est ici qu'on fendit le pucelage de l'aviatrice.
Les étudiantes admiraient le factum du recteur. ;Les étudiantes admiraient le rectum du facteur.
Les laborieuses populations du Cap.;Les laborieuses copulations du Pape.
La cuvette est pleine de bouillon. ;La buvette est pleine de couillons.
Le scorpion est malade. ;Le morpion escalade.
Quel beau métier: professeur! ;Quel beau fessier: prometteur!
Elle est folle de la messe.;Elle est molle de la fesse.
Dès qu'on touche à son petit banc, cet enfant boude. ;Des qu'on touche à son petit bout, cet enfant bande.
A la vue des Nippons, la Chine se soulève.;A la vue des nichons, la pine se soulève.
Glisser dans la piscine. ;Pisser dans la glicine.
Taisez-vous en bas! ;Baisez-vous en tas!
Ma soeur taille des jupes au Pirée.;Ma soeur taille des pipes aux jurés.
Pour bien dîner, il faut être peu. ;Pour bien pinner, il faut être deux.
Auberge de Vendée.;Aux verges de bander.
Chère collaboratrice, je vous laisse le choix dans la date.;Chère collaboratrice, je vous laisse le doigt dans la chatte.
Parachute.;Char à putes.
Couper les nouilles au sécateur.;Couper les couilles au sénateur.
Empiler les culottes.;Enculer les pilotes.
L'assistante brouille l'écoute de l'ingénieur qui a une panne de micro. ;L'assistante broute les couilles de l'ingénieur qui a une pine de maquereau.
Un mine de chapeau.;Une pine de chameau.
Arriver à Béziers la veille. ;Arriver à baiser la vieille.
J'ai des rebords à mes épaulettes. ;J'ai des remords à baiser Paulette.
Allons, chérie, essuie ça vite et bien.;Allons, chérie, essuie sa bite et vient.
Ces colonnes de gauchistes se branchent devant l'Irak. ;Ces cochonnes de Gaullistes se branlent devant Chirac.
La princesse aime la dotation du roi. ;La princesse aime la rotation du doigt.
La femme du capitaine à fait mander le marin à bord.;La femme du capitaine à fait bander le marin à mort.
À l'Éducation Nationale, on aime bien l'équipe en place. ;A l'Education Nationale, on aime bien les pipes en classe.
Escalope sur une salade.;Escalade sur une salope.
Le gros entrepreneur pétrit le béton à la tonne. ;Le gros entrepreneur pétrit le têton à la bonne.
La jeune paysanne rêve devant un beau vendeur. ;La jeune paysanne rêve devant un veau bandeur.
L'archéologue met dans des caisses le produit de ses fouilles. ;L'archéologue met dans des fesses le produit de ses couilles.
Cette femme habite les gîtes.;Cette femme agite les bites.
Le préfet de Nîmes voudrait plus d'écus pour son Gard. ;Le préfet de Nîmes voudrait plus d'égard pour son cul.
Souhaitez-vous, Monsieur, des nouilles encore?;Souhaitez-vous, Monsieur, des couilles en or?
Aucun homme n'est jamais assez fort pour ce calcul.;Aucun homme n'éjacule assez fort pour se calmer.
J'aime vachement votre frangin.;J'aime franchement votre vagin.
Je te verrais bien en curé, avec une calotte. ;Je te verrais bien enculé avec une carotte.
La philantropie de l'ouvrier charpentier.;La tripe en folie de l'ouvrier partant chier.
Deux carrioles sans mulet.;Deux marrioles s'enculaient.
La jeune fille revient de la ferme pleine d'espoir jusqu'au pont du Jura.;La jeune fille revient de la foire pleine de sperme jusqu'au ras du jupon.
Alors que les athées se battent, les abbés se taisent.;Alors que les abbés se tâtent, les athés se baisent.
Cette jolie fille habite Laval. ;Cette jolie fille avale la bite.
L'Afrique est bonne hôtesse quand la canicule nous emballe. ;La trique est bonne aux fesses quand le cannibale nous encule.
Ces soupers manquent de pains. ;Ces poupées manquent de seins.
Elle fait de délicieuses tripes aux papillotes. ;Elle fait de délicieuses pipes aux patriotes.
Madame, il faut secouer les mites de vos habits. ;Madame, il faut secouer les bites de vos amis.
Elle avait un chapelet de citrouilles autour du cou. ;Elle avait un chapelet de six couilles autour du trou.
Il courait tant de buts divers qu'il en perdait sa belle mine.;Il bourrait tant de culs divers qu'il emmerdait sa belle pine.
Devenu riche à force de peiner, l'ouvrier roule sur les pépettes.;SDevenu rêche à force de piner, l'ouvrier pèle sur les roupettes.
Un curé précis refuse toujours le tennis. ;Un cul rétrécis refuse toujours le pénis.
J'ai du tracas jusqu'au cou! ;J'ai du caca jusqu'au trou!
On ne peut pas dîner, si on est pas assez pur.;On ne peut pas piner, si on est pas assez dur.
Affaissant subitement son broc, le garçon laitier mouilla les fiches de la dactylo et chuta dans la jatte.;Abaissant subitement son froc, le garçon laitier fouilla les miches de la dactylo et juta dans la chatte.
Les nonnes aimeraient faire des chatouilles sur leur pape. ;Les nonnes aimeraient faire des papouilles sur leur chatte.
Cette jeune femme a l'art de décaler les sons. ;Cette jeune femme a l'art dessaler les cons.
La botaniste admire ce plan qui vient de la Guinée. ;La botaniste admire ce gland qui vient de la piner.
L'étudiante en archéologie rêve de tomber sur des fouilles curieuses. ;L'étudiante en archéologie rêve de tomber sur des couilles furieuses.
Un hachis parmentier. ;Un amant parti chier.
Elle est assise sur la berge du ravin.;Elle est assise sur la verge du rabbin.
Quel bonheur pour la princesse que la dotation du roi.;Quel bonheur pour la princesse que la rotation du doigt.
Les mutins passaient le berge du grand ravin.;Les putains massaient la verge du grand rabbin.
Saisons belles qui passent!;Baisons celles qui passent !
Le capitaine redoute les proues qui tuent. ;Le capitaine redoute les trous qui puent.
La pratique intensive du tennis en pension donne aux jeunes une mine piteuse.;La pratique intensive du pénis en tension donne aux jeunes une pine miteuse.
Il court, il court, le furet.;Il court, il fourre, le curé.
C'était une fine appellation.;C'était une pine à fellation.
C'est dimanche: un coup de vin.;Un coup de manche: c'est divin.
Un petit calcul et on s'en va.;Un petit calva et on s'encule.
Le chercheur est fatigué après une belle thèse. ;Le chercheur est fatigué après une telle baise.
Les corbeaux aiment le sang qui coule à la curée d'un cerf.;Les corsaires aiment le sang qui coule à la raie d'un beau cul.
A l'évêché on peut voir un vieux plan de Gap.;A l'évêché on peut voir un vieux gland de pape
Elle est folle de la messe. ;Elle est molle de la fesse.
Salut Patrick!;Ca pue la trique!
Les luxations répétées provoquent la fêlure.;Les fellations répétées provoquent la luxure.
A force de mouiller les fiches, je suis arrivé au fond de la colle.;A force de fouiller les miches, je suis arrivé au con de la folle.
A la boutique des Milles Bottes, on solde des tennis de pro.;A la boutique des belles mottes, on solde des pénis de trop.
A l'armée, le lieutenant veut défiler et le général m'engueule!;A l'armée, le lieutenant veut dégueuler et le général m'enfile!
A l'auberge des Deux Reines, le cuisinier entame une vache marginale.;A l'auberge des Nœuds Raides, le cuisinier entame une marche vaginale.
A l'auberge du Congre Debout, j'ai humé des Côtes en fût et j'ai senti des rillettes du cru.;A l'auberge du Bougre de Con, j'ai humé des crottes de cul et j'ai senti des filles en rut.
A l'auberge du Congre Debout, j'ai mangé de la tourte aux cailles et je me suis délectée d'une vieille fine sans dépôt.;A l'auberge du Bougre de Con, j'ai mangé de la tarte aux couilles et je me suis délectée d'une vieille pine sans défaut.
Faites donc voir votre glu à l'ancienne: cette vielle colle s'enflamme au contact des feux.;Faites donc voir votre gland à Lucienne: cette vielle folle s'enflamme au contact des queues.
A l'hôtel du Bon Coucher, j'ai goûté un vieux marc très doux et j'ai apprécié la poire à la fine.;A l'hôtel du Con Bouché, j'ai goûté un vieux dard très mou et j'ai apprécié la foire à la pine.
A l'idée de voir la Chine, la jeune fille est envahie d'une étrange pâleur.;A l'idée de voir la pine, la jeune fille est envahie d'une étrange chaleur.
A quoi bon me pousser pour que je vous trompe?;A quoi bon me trousser pour que je vous pompe?
A vouloir aller plus vite que le son, vous risquez de vous briser la nuque!;A vouloir aller plus vite que le con, vous risquez de vous briser l'anus!
A Wimbledon, le juge de touche s'est fait acculer derrière Sanchez.;A Wimbledon, le juge de touche s'est fait enculer derrière sa chaise.
Madame, admirez donc l'écaille de ces moules!;Madame, admirez donc les couilles de ces mâles!
Adjudant, faites bisser l'appel!;Adjudant, faites pisser la belle!
Ah Madame! Si vous saviez ce que votre plante me fait!;Ah Madame! si vous saviez ce que votre fente me plaît!
Ah! Ma sœur! Vous avez bêché trois allées?! ;Ah! Ma sœur! Vous avez léché trois abbés?!
Aimer le blanc, c'est une histoire de goût.;Aimer le gland, c'est une histoire de bout.
Les religieuses se lèvent au couchant et se passent facilement de pain jusqu'aux matines.;Les religieuses se lèchent au couvent et se passent facilement de pine jusqu'au matin.
Après de pareils faits, vous pouvez vous permettre.;Après de pareils pets, vous pouvez vous faire mettre.
Apprendre à calculer en cent leçons.;Apprendre à s'enculer en caleçon.

449
kabot/kabot/utils/texte.py Normal file
View file

@ -0,0 +1,449 @@
# -*- coding: utf-8 -*-
"""Main module."""
from __future__ import unicode_literals
import aiocron
import asyncio
import discord
import giphy_client
import gitlab
import logging
import lxml
import os
import random
import requests
import configparser
import argparse
import typing
import functools
from bs4 import BeautifulSoup as bs
from discord.ext import tasks, commands
from giphy_client.rest import ApiException
from logging.handlers import RotatingFileHandler
from pathlib import Path
from subprocess import *
from sys import argv,exit, exc_info
here = os.path.dirname(os.path.abspath(__file__))
class Texte(commands.Cog):
#class Mybot(discord.Client):
#Fonctions necesaires pour Kabot.
def __init__(
self,
bot,
intents=None,
gl_url=None,
gl_token=None,
gif_token=None,
audio_path=None,
nickname=None,
voice_chan=None,
text_chan=None,
):
self.gl_url = gl_url
self.gl_token = gl_token
self.gif_token = gif_token
self.voice_chan = voice_chan
self.text_chan = text_chan
self.bot = bot
self.nickname = nickname
@commands.Cog.listener()
async def on_ready(self):
for channel in self.bot.get_all_channels():
if channel.name == self.text_chan:
current_chan = channel
if self.nickname:
await self.bot.user.edit(nick=self.nickname)
await current_chan.send('Le troll est dans la place !')
self.kron.start()
@commands.Cog.listener()
async def on_message(self, message):
if message.author == self.bot.user and message.content.startswith('!'):
if message.content.startswith('!'):
ctx = await self.bot.get_context(message)
await self.bot.invoke(ctx)
return
else:
if self.bot.user in message.mentions \
and len(message.mentions) < 3 \
and len(message.content.splitlines()) == 1:
path = '/data/log/%s.log' % message.channel
with open(path, 'r') as f:
lines = f.read().splitlines()
if not message.content in lines:
with open(path, 'a') as f:
f.write(message.content + '\n')
response = random.choice(lines).replace(str(self.bot.user.id), str(message.author.id))
async with message.channel.typing():
if "http" in response:
await asyncio.sleep(len(response) / 8)
else:
await asyncio.sleep(len(response) / 6)
await message.channel.send(response)
#await self.bot.process_commands(message)
@commands.command(help='list des commits')
async def commits(self, ctx, number = 5):
try:
if self.gl_url and self.gl_token:
number = int(number)
gl = gitlab.Gitlab(self.gl_url, self.gl_token)
gl.auth()
projects = gl.projects.list(search='Kabot')[0]
commits = projects.commits.list(all=True)[:number]
for commit in commits:
detail = commit.attributes
await ctx.channel.send("__" + detail['author_name'] + "__: " + detail['title'] + '\n' + detail['web_url'])
else:
await ctx.channel.send("-_-")
except:
await ctx.channel.send("-_-")
@commands.command(help="Interrogation issues \n Args: list, search[mot clé] et add[nom de l'issue]")
async def issue(self, ctx, *args):
if self.gl_url and self.gl_token:
if args:
args = list(args)
gl = gitlab.Gitlab(self.gl_url, self.gl_token)
gl.auth()
if args[0] == 'list':
projects = gl.projects.list(search='Kabot')[0]
issues = projects.issues.list()
for issue in issues:
if "closed" == issue.state:
pass
else:
await ctx.channel.send('#' + str(issue.id) + ": " + issue.title + '\n' + issue.web_url)
elif args[0] == 'search':
query = ''.join(args[1:])
project = gl.projects.list(search='Kabot')[0]
find_issues = project.search("issues", query)
for issue in find_issues:
await ctx.channel.send("#" + str(issue['id']) + ": " + issue['title'] + '\n' + issue['web_url'])
elif args[0] == 'add':
title = ' '.join(args[1:])
author = title + ' - By ' + ctx.message.author.name
projects = gl.projects.list()
for project in projects:
if "Kabot" == project.name:
issue = project.issues.create({'title': author})
logger.info("Issue created : %s" % issue.web_url)
else:
await ctx.channel.send('unknown command')
@commands.command(help='count lines numbers in quote file')
async def lines(self, ctx):
path = '/data/log/%s.log' % ctx.channel
with open(path, 'r') as f:
lines = f.read().splitlines()
nb_lines = len(lines)
async with ctx.channel.typing():
await asyncio.sleep(0.5)
await ctx.channel.send("j'ai %s lignes dans mon stock" % nb_lines)
@commands.command(help='check if bot always online')
async def ping(self, message):
await message.channel.send('pong')
@commands.command(help='Restart Bot')
async def restart(self, ctx):
cmd = self.bot.get_command('leave')
await cmd.invoke(ctx)
await self.bot.close()
exit()
@commands.command(help='Update local repo')
async def update(self, message):
output = Popen('git pull'.split(), stdout=PIPE).communicate()[0]
cmd_audio = "git -C %s pull" % self.audio_path
output += Popen(cmd_audio.split(), stdout=PIPE).communicate()[0]
await message.channel.send(output.decode('utf-8'))
@commands.command(help="randomsur l'avenir des gens.")
async def avenir(self, ctx):
list_mot = ("tu seras curé, tu t'occuperas plus spécialement du catéchisme. ",
"tu seras animateur de soirées pour les gays pride. ",
"tu seras gynecologue dans une maison de retraite.",
"tu iras vivre en thaïland à cause de ton job. car tu seras ladyboy dans un bar.",
"tu sera DSI chez jacky et Michel",
"tu seras arroseur de plante aquatique.")
choix = random.choice(list_mot)
async with ctx.channel.typing():
await asyncio.sleep(len(choix) / 4)
await ctx.channel.send(choix)
@commands.command(help="j'adore la cuisine")
async def ciboulette(self, ctx):
cmd = self.bot.get_command('gif')
ctx.message.content = "!gif ciboulette"
await cmd.invoke(ctx)
@commands.command(help='Faire des choix')
async def choice(self, ctx, *words):
choices = random.choice(words)
await ctx.channel.send(choices)
@commands.command(help="optionnal args : ")
async def contrepeterie(self, ctx, *args):
response = None
path = here + '/ressources/contrepeteries.txt'
with open(path) as file:
lines = file.read().splitlines()
myline = random.choice(lines)
question, reponse = myline.split(";")
try:
response = '''Question ! : %s Réponse : ||%s||''' % (question, reponse)
except:
response = "Unknow error, try: !contrepeterie [mot clef]"
await ctx.send(response)
@commands.command(help='Gif me')
async def gif(self, ctx):
query = ctx.message.content.replace('!gif ', '')
api_instance = giphy_client.DefaultApi()
api_key = self.gif_token
lang = 'fr'
if api_key:
try:
api_response = api_instance.gifs_search_get(api_key, query, lang=lang, limit=15)
api_response.to_dict()['data'][0]
get_url = random.choice(api_response.to_dict()['data'])
get_url['url']
await ctx.channel.send(get_url['url'])
except ApiException as e:
await ctx.channel.send("Exception when calling DefaultApi->gifs_search_get: %s\n" % e)
else:
await ctx.channel.send("Exception : No api key found")
@commands.command(help="optionnal args : [livre] [character]")
async def kaamelott(self, ctx, *args):
response = None
url = 'https://kaamelott.chaudie.re/api/random'
if args and ctx.message.content:
args = list(args)
if args[0].isdigit():
livre = int(args[0])
args.pop(0)
elif args[-1].isdigit():
livre = int(args[-1])
args.pop(-1)
else:
livre = None
if args:
perso = ' '.join(args)
if perso and livre:
url = 'https://kaamelott.chaudie.re/api/random/livre/%s/personnage/%s' % (livre, perso)
elif perso:
url = 'https://kaamelott.chaudie.re/api/random/personnage/%s' % perso
else:
url = 'https://kaamelott.chaudie.re/api/random/livre/%s' % livre
try:
citation = requests.get(url).json()['citation']
response = "%s :\n```\n%s\n```" % (citation['infos']['personnage'], citation['citation'])
except:
response = "Unknow error, try: !kaamelott [livre] [character]"
await ctx.send(response)
@commands.command(help="Je menotte une cornemuse et je fume Eddy Malou")
async def kamoulox(self, ctx):
sans_verbe = get_word('nom').text + " " + get_word('complement').get('m') + " et " + get_word('nom').text + " " + get_word('complement').get('m') + "."
nom1 = get_word('nom')
nom2 = get_word('nom')
un1 = "un"
un2 = "un"
if nom1.get('gender') == 'F':
un1 = "une"
if nom2.get('gender') == 'F':
un2 = "une"
phrase1 = get_word('verbe').text + " " + un1 + " " + nom1.text + " " + random.choice([get_word('complement').get('m'), ""])
phrase2 = get_word('verbe').text + " " + un2 + " " + nom2.text + " " + random.choice([get_word('complement').get('m'), ""])
avec_verbe = phrase1 + " et " + phrase2 + "."
piece = random.choice(['pile', 'face'])
if piece == "pile":
result = sans_verbe
elif piece == "face":
result = avec_verbe
async with ctx.channel.typing():
await asyncio.sleep(len(result)/6)
await ctx.send(result)
@commands.dm_only()
@commands.command(help="Faire dire des choses au bot")
async def say(self, ctx, *message):
sentence = ' '.join(message)
channel = [x for x in self.bot.get_all_channels() if x.name == self.text_chan][0]
guild = self.bot.guilds[0]
for word in sentence.split():
if word.startswith('@'):
members = guild.members
for member in members:
if member.display_name.lower() in word.lower():
sentence = sentence.replace(word, member.mention)
await channel.send(sentence)
@commands.command(help='Who the fuck am i?')
async def schizo(self, ctx, *names):
name = ' '.join(names)
list_name = ["Kabot", "Gaspard et Balthazar", "Bender", "Zoidberg", "Gunther", "MissSaugnacEtCambran2022"]
try:
current_name = self.bot.user.name
list_name.remove(current_name)
except:
pass
if not name:
name = random.choice(list_name)
lower_names = [x.lower() for x in list_name]
if name.lower() in lower_names:
if name:
correct_name = [x for x in list_name if x.lower() in name.lower()][0]
name = correct_name
await self.bot.user.edit(username=name)
else:
name = "404"
await self.bot.user.edit(username="Error 404 name not found!")
await ctx.channel.send("Liste des noms = %s" % list_name)
img = open(here + "/ressources/avatar_bot/%s.jpg" % name, 'rb')
await self.bot.user.edit(avatar=img.read())
await self.joke(ctx, name)
@tasks.loop(seconds=3600)
async def kron(self):
kron_choice = random.choice([self.kaamelott, self.slap, self.kamoulox, self.contrepeterie, self.schizo, None, None, None, None, None, None, None,None,None,None,None,None,None])
if kron_choice != None:
await asyncio.sleep(random.choice(range(3550)))
for channel in self.bot.get_all_channels():
if channel.name == self.text_chan:
current_chan = channel
async for msg in current_chan.history(limit=1):
last_message = msg
ctx = await self.bot.get_context(last_message)
ctx.message.content = ""
await kron_choice(ctx)
@commands.command(help='slap this ass')
async def slap(self, ctx, user=None):
slap_multiple = [
"%s prend un coup de pied au cul",
"Descente du coude sur %s",
"%s est propulsé par dessus la TROISIEME CORDE!",
"Le mec en rose, c'est moi et le mec en jaune c'est %s! https://giphy.com/gifs/gSIz6gGLhguOY",
]
if not user or not ctx.message.mentions:
online_members = []
members = ctx.guild.members
for member in members:
if str(member.status) == "online":
online_members.append(member)
user = random.choice(online_members)
user = user.mention
elif ctx.message.mentions:
user = ctx.message.mentions[0]
user = user.mention
if user == self.bot.user.mention:
async with ctx.channel.typing():
await asyncio.sleep(0.5)
await ctx.channel.send("je tribuche par terre et je sais pas comment")
else:
async with ctx.channel.typing():
await asyncio.sleep(len(slap_multiple) / 4)
await ctx.channel.send(random.choice(slap_multiple) % user)
#Commandes pour troll.
@commands.command(help='Troll commands', hidden=True)
async def jke(self, ctx):
await ctx.channel.send(trollpower())
@commands.command(help='Troll commands', hidden=True)
async def joe(self, ctx):
await ctx.channel.send(trollpower())
@commands.command(help='Troll commands', hidden=True)
async def jok(self, ctx):
await ctx.channel.send(trollpower())
@commands.command(help='Troll commands', hidden=True)
async def joker(self, ctx):
await ctx.channel.send(trollpower(too_long=True))
@commands.command(help='Troll commands', hidden=True)
async def oke(self, ctx):
await ctx.channel.send(trollpower())
def trollpower(too_long=None):
if too_long:
return("Bah alors, on sait plus écrire, je te donne un indice: t'as une lettre en trop! :sweat_drops: :tongue:")
return('Bah alors, on sait plus écrire, je te donne un indice: il te manque une lettre! :sweat_drops: :tongue:')
def get_word(word_type):
"""Chercher les mots pour la fonction kamoulox dans le fichier xml"""
content = []
with open(here + "/ressources/base_kml.xml", "r", encoding="ISO-8859-1") as file:
content = file.readlines()
content = "".join(content)
bs_content = bs(content, 'lxml')
if word_type == 'nom':
nom = bs_content.resources.nom.find_all('word')
result = random.choice(nom)
return result
elif word_type == 'nom_propre':
nom_propre = bs_content.resources.nompropre.find_all('word')
result = random.choice(nom_propre)
return result
elif word_type == 'verbe':
verbe = bs_content.resources.verbe.find_all('word')
result = random.choice(verbe)
return result
elif word_type == 'complement':
complement = bs_content.resources.complement.find_all('word')
result = random.choice(complement)
return result
elif word_type == 'nom_special':
nom_special = bs_content.resources.complement.find_all('word')
result = random.choice(nom_special)
return result
elif word_type == 'prenom':
prenom = bs_content.resources.prenom.find_all('word')
result = random.choice(prenom)
return result
elif word_type == 'prescuse':
prescuse = bs_content.resources.prescuse.find_all('word')
result = random.choice(prescuse)
return result
elif word_type == 'scuse1':
scuse1 = bs_content.resources.scuse1.find_all('word')
result = random.choice(scuse1)
return result
elif word_type == 'scuse2':
scuse2 = bs_content.resources.scuse2.find_all('word')
result = random.choice(scuse2)
return result
elif word_type == 'presulte':
presulte = bs_content.resources.presulte.find_all('word')
result = random.choice(presulte)
return result
elif word_type == 'sulte':
sulte = bs_content.resources.sulte.find_all('word')
result = random.choice(sulte)
return result
elif word_type == 'postsulte':
postsulte = bs_content.resources.presulte.find_all('word')
result = random.choice(postsulte)
return result
elif word_type == 'mail':
mail = bs_content.resources.mail.find_all('word')
result = random.choice(mail)
return result
else:
result = 'Nique bien ta mère!'
return result

View file

@ -1,10 +0,0 @@
pip==19.2.3
bump2version==0.5.11
wheel==0.33.6
watchdog==0.9.0
flake8==3.7.8
tox==3.14.0
coverage==4.5.4
Sphinx==1.8.5
twine==1.14.0

View file

@ -15,6 +15,12 @@ requirements = [
'discord.py', 'discord.py',
'requests', 'requests',
'PyNaCl', 'PyNaCl',
'aiocron',
'python-gitlab',
'giphy_client',
'yt-dlp',
'lxml',
'BeautifulSoup4',
] ]
setup_requirements = [ ] setup_requirements = [ ]
@ -24,7 +30,7 @@ test_requirements = [ ]
setup( setup(
author="Michaël Ricart", author="Michaël Ricart",
author_email='michael.ricart@0w.tf', author_email='michael.ricart@0w.tf',
python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*', python_requires='>=3.11',
classifiers=[ classifiers=[
'Development Status :: 2 - Pre-Alpha', 'Development Status :: 2 - Pre-Alpha',
'Intended Audience :: Developers', 'Intended Audience :: Developers',
@ -40,13 +46,14 @@ setup(
description="kabot for discord", description="kabot for discord",
entry_points={ entry_points={
'console_scripts': [ 'console_scripts': [
'kabot=kabot.kabot:main', 'kabot=kabot.kabot:run',
], ],
}, },
install_requires=requirements, install_requires=requirements,
license="BSD license", license="BSD license",
long_description=readme + '\n\n' + history, long_description=readme + '\n\n' + history,
include_package_data=True, include_package_data=True,
package_data={'ressources': ['kabot/utils/ressources/*']},
keywords='kabot', keywords='kabot',
name='kabot', name='kabot',
packages=find_packages(include=['kabot', 'kabot.*']), packages=find_packages(include=['kabot', 'kabot.*']),
@ -54,6 +61,6 @@ setup(
test_suite='tests', test_suite='tests',
tests_require=test_requirements, tests_require=test_requirements,
url='https://github.com/None/kabot', url='https://github.com/None/kabot',
version='0.1.0', version='0.2.18',
zip_safe=False, zip_safe=False,
) )

View file

@ -1,20 +0,0 @@
[tox]
envlist = py27, py35, py36, py37 flake8
[travis]
python =
3.7: py37
3.6: py36
3.5: py35
2.7: py27
[testenv:flake8]
basepython = python
deps = flake8
commands = flake8 kabot
[testenv]
setenv =
PYTHONPATH = {toxinidir}
commands = python setup.py test

View file

@ -1,37 +0,0 @@
[versions]
Click = 7.0
Jinja2 = 2.10.1
MarkupSafe = 1.1.1
aiohttp = 3.5.4
async-timeout = 3.0.1
attrs = 19.1.0
binaryornot = 0.4.4
certifi = 2019.9.11
chardet = 3.0.4
cookiecutter = 1.6.0
future = 0.17.1
idna = 2.8
jinja2-time = 0.2.0
mr.developer = 2.0.0
multidict = 4.5.2
poyo = 0.5.0
requests = 2.22.0
urllib3 = 1.25.6
websockets = 6.0
whichcraft = 0.6.1
yarl = 1.3.0
zc.buildout = 2.13.2
zc.recipe.egg = 2.0.7
# Required by:
# jinja2-time==0.2.0
arrow = 0.15.2
# Required by:
# arrow==0.15.2
python-dateutil = 2.8.0
# Required by:
# mr.developer==2.0.0
six = 1.12.0