Compare commits

...

528 commits

Author SHA1 Message Date
6b9e153de1 try to fix command prefix 2024-01-02 16:45:19 +01:00
6504c286da add more None un kron 2024-01-02 15:52:14 +01:00
8cca3c1990 fix boulette 2023-12-29 17:18:12 +01:00
b7d3546cea fix some traceback in logs 2023-12-29 17:10:09 +01:00
6f2460eaef WIP #32 2023-12-29 15:50:46 +01:00
3cdec52d81 Fix welcome text message 2023-12-29 15:39:10 +01:00
9a4e9b3735 Fix welcome text message 2023-12-29 15:32:40 +01:00
2fadbe74c0 WIP #32 2023-12-29 15:21:57 +01:00
2d8518e169 WIP #32 2023-12-29 15:10:40 +01:00
26a30c9af8 WIP #32 2023-12-29 15:00:02 +01:00
d33eb077a7 WIP #32 2023-12-29 14:48:17 +01:00
daa3c7aa0d WIP #32 2023-12-29 14:20:47 +01:00
f2b6638616 WIP #32 2023-12-29 14:00:02 +01:00
d913af4378 WIP #32 2023-12-29 11:54:19 +01:00
2d893dbda2 Ajout d'une limite à la commande find #51 2023-12-29 10:34:41 +01:00
a6a7eb07bc WIP #51 2023-12-29 10:24:03 +01:00
012feae29c WIP #51 2023-12-28 17:10:52 +01:00
c3e590fd2c fix #11 2023-12-28 11:32:02 +01:00
8e654da976 update variable 2023-12-27 17:12:00 +01:00
5dd913d1ca update variable 2023-12-27 17:10:36 +01:00
e8fef9801e ci-cd 2023-12-27 17:07:15 +01:00
ff98d6b453 rattrapage 2023-12-27 16:54:31 +01:00
a046a4d55f update version 2023-12-27 08:38:28 +01:00
82c5c6501c fix kron function 2023-12-27 08:37:20 +01:00
ccde0ff81d deploy dockerfile 2023-12-26 15:32:21 +01:00
30e89ba49c update version 2023-12-26 13:42:52 +01:00
55d4045a2e fix entrypoint 2023-12-26 13:42:00 +01:00
d2291738bb fix import && update version 2023-12-26 13:28:46 +01:00
d77d390efe typo 2023-12-26 13:25:05 +01:00
c47df4b78c code refactoring 2023-12-26 13:19:46 +01:00
5792a88911 fix intents 2023-12-13 21:22:50 +01:00
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
84dd36208f try to fix schizo cmd 2021-11-21 16:49:43 +01:00
239bbe259e try to fix schizo cmd 2021-11-21 16:48:04 +01:00
34b1c075b6 try to fix schizo cmd 2021-11-21 16:47:01 +01:00
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
5207baf83f WIP on #11 2021-02-18 22:08:17 +01:00
b719019dbd WIP on #11 2021-02-18 22:04:29 +01:00
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
310c4288a4 remove credentials 2020-12-26 23:46:02 +01:00
f74d152d81 fix issue print seconde edition 2020-12-26 18:47:05 +01:00
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
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
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
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
518687059f Update kabot.py 2020-08-13 20:03:55 +00:00
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
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
prod.cfg
exploit_overrides.cfg
buildout.cfg
#buildout.cfg
config.ini
mr-dev/*
.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
clone this repositori, then :
clone this repository, then :
.. code-block:: bash
@ -22,4 +22,34 @@ Utilisation
.. 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 LICENSE
include README.rst
include kabot/utils/ressources/*
recursive-include tests *
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 -*-
"""Top-level package for Kabot."""
"""
Top-level package for Kabot.
"""
__author__ = """Michaël Ricart"""
__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 random
import asyncio
import discord
import yt_dlp as youtube_dl
from discord.ext import commands
import os
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)
from kabot.utils.audio import *
from kabot.utils.texte import *
def main():
token = "NjI3MTM3NDY1MDA5ODMxOTQ2.XY4Raw.pw8sAen3bNR5aYsoTChQOudM0L8"
bot = commands.Bot(command_prefix='!')
intents = discord.Intents.all()
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
async def on_message(message):
print(message.content)
if message.author == bot.user:
return
async def on_ready():
print(f'Logged in as {bot.user} (ID: {bot.user.id})')
print('------')
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:
if bot.user in message.mentions \
and len(message.mentions) < 3 \
and len(message.content.splitlines()) == 1:
path = '/tmp/%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(bot.user.id), str(message.author.id))
await message.channel.send(response)
await bot.process_commands(message)
@bot.event
async def on_voice_state_update(member,before,after):
if "BFlow" in member.name:
if before.channel is None and after.channel:
for channel in bot.get_all_channels():
if channel.name == "général":
current_chan = channel
ctx = bot.get_context(current_chan.last_message)
benjamin = bot.get_command('benjamin')
await benjamin.invoke(ctx)
bot.add_cog(Mybot(bot))
bot.run(token)
nickname = None
if "voice_channel" in config['DEFAULT']:
voice_channel = config['DEFAULT']['voice_channel']
else:
voice_channel = None
if "text_channel" in config['DEFAULT']:
text_channel = config['DEFAULT']['text_channel']
else:
text_channel = None
audio_path = config['DEFAULT']['audio_path']
token = config['discord']['token']
gl_url = config['gitlab']['url']
gl_token = config['gitlab']['token']
gif_token = config['giphy']['token']
async with bot:
await bot.add_cog(
Audio(
bot,
voice_chan=voice_channel,
text_chan=text_channel,
audio_path=audio_path,
)
)
await bot.add_cog(
Texte(
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__":
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',
'requests',
'PyNaCl',
'aiocron',
'python-gitlab',
'giphy_client',
'yt-dlp',
'lxml',
'BeautifulSoup4',
]
setup_requirements = [ ]
@ -24,7 +30,7 @@ test_requirements = [ ]
setup(
author="Michaël Ricart",
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=[
'Development Status :: 2 - Pre-Alpha',
'Intended Audience :: Developers',
@ -40,13 +46,14 @@ setup(
description="kabot for discord",
entry_points={
'console_scripts': [
'kabot=kabot.kabot:main',
'kabot=kabot.kabot:run',
],
},
install_requires=requirements,
license="BSD license",
long_description=readme + '\n\n' + history,
include_package_data=True,
package_data={'ressources': ['kabot/utils/ressources/*']},
keywords='kabot',
name='kabot',
packages=find_packages(include=['kabot', 'kabot.*']),
@ -54,6 +61,6 @@ setup(
test_suite='tests',
tests_require=test_requirements,
url='https://github.com/None/kabot',
version='0.1.0',
version='0.2.18',
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