2020-12-23 02:20:34 +01:00
import discord , re
2020-11-29 11:39:41 +01:00
from discord . ext import commands
from random import randint , choice
2020-12-23 02:20:34 +01:00
from datetime import timedelta
2020-11-29 11:39:41 +01:00
def setup ( client ) :
client . add_cog ( Fun ( client ) )
class Fun ( commands . Cog ) :
""" Commandes plutôt fun. """
def __init__ ( self , client ) :
self . client = client
@commands.command ( name = ' iq ' )
async def _iq ( self , ctx , * , user = ' 0 ' ) :
""" Calcule ton IQ. \n ➡ Syntaxe: .iq [user] """
if user == ' 0 ' :
user = ctx . author
await ctx . message . add_reaction ( emoji = ' ✅ ' )
return await ctx . send ( f " T ' as { randint ( randint ( - 100 , 0 ) , 220 ) } IQ { user . mention } ! " )
else :
try :
user2 = user
user2 = user2 [ 2 : - 1 ]
user2 = user2 . replace ( " ! " , " " )
user2 = int ( user2 )
user2 = self . client . get_user ( user2 )
KassouBot = self . client . get_user ( 740140888373854269 )
if user2 . id == KassouBot . id :
await ctx . message . add_reaction ( emoji = ' ✅ ' )
return await ctx . send ( f " Bah... pas ouf... j ' ai juste 100000 IQ :/ " )
else :
await ctx . message . add_reaction ( emoji = ' ✅ ' )
message = await ctx . send ( " ... " )
return await message . edit ( content = f " { user2 . mention } a { randint ( randint ( - 100 , 0 ) , 220 ) } IQ ! " )
except :
await ctx . message . add_reaction ( emoji = ' ✅ ' )
message = await ctx . send ( " ... " )
return await message . edit ( content = f " { user } a { randint ( randint ( - 100 , 0 ) , 220 ) } IQ ! " )
@commands.command ( name = ' love ' )
async def _love ( self , ctx , * users : discord . Member ) :
""" Découvre la probabilité que ces deux personnes se mettent en couple. \n ➡ Syntaxe: .love <User1> <User2> """
if len ( users ) == 2 or len ( users ) == 1 :
UneDemande = False
if len ( users ) == 1 :
U = users
users = [ ]
users . append ( U [ 0 ] )
users . append ( ctx . author )
UneDemande = True
if users [ 0 ] == users [ 1 ] :
await ctx . message . add_reaction ( emoji = ' ✅ ' )
return await ctx . send ( " Je suis sûr que cette personne s ' aime ! :angry: " )
if users [ 0 ] . nick :
user1 = list ( users [ 0 ] . nick )
else :
user1 = list ( users [ 0 ] . name )
if users [ 1 ] . nick :
user2 = list ( users [ 1 ] . nick )
else :
user2 = list ( users [ 1 ] . name )
user1_CALC = self . _retirerDoublons ( [ x . lower ( ) for x in user1 ] )
user2_CALC = self . _retirerDoublons ( [ x . lower ( ) for x in user2 ] )
coef_amour = 0
if len ( user1_CALC ) > len ( user2_CALC ) :
taille_du_pls_grand = len ( user1_CALC )
taille_du_ms_grand = len ( user2_CALC )
else :
taille_du_pls_grand = len ( user2_CALC )
taille_du_ms_grand = len ( user1_CALC )
coef_amour = round ( float ( len ( list ( set ( user1_CALC ) . intersection ( user2_CALC ) ) ) / taille_du_pls_grand ) , 1 ) * 100 + ( ( taille_du_pls_grand - taille_du_ms_grand ) * 1.5 ) * 1.7
if coef_amour > 100 :
coef_amour = 100
if UneDemande == True :
await ctx . message . add_reaction ( emoji = ' ✅ ' )
return await ctx . send ( f " Tu as { coef_amour } % de chance de te mettre en couple avec { ' ' . join ( user1 ) } " )
await ctx . message . add_reaction ( emoji = ' ✅ ' )
await ctx . send ( f " { ' ' . join ( user1 ) } et { ' ' . join ( user2 ) } ont { coef_amour } % de chance de se mettre en couple ! " )
else :
await ctx . message . add_reaction ( emoji = ' ❌ ' )
await ctx . send ( " Erreur! Syntaxe : `.love <User1> [User2]` \n " )
def _retirerDoublons ( self , liste ) :
Newliste = [ ]
for element in liste :
if element not in Newliste :
Newliste . append ( element )
return Newliste
@_love.error
async def _love_error ( self , ctx , error ) :
await ctx . send ( str ( error ) . replace ( ' Member " ' , " Le membre ** " ) . replace ( ' " not found ' , " ** n ' as pas été trouvé. " ) )
@commands.command ( name = ' 8ball ' , aliases = [ ' 8b ' , ' 8balls ' ] )
async def _8ball ( self , ctx , * , question ) :
""" Répond à ta question 🔮. \n ➡ Syntaxe: .8ball/8b <question> """
reponses = [ " c ' est sûr. " , " il en est décidément ainsi. " , " incontestablement. " , " oui sans aucun doute. " , " tu peux t ' y fier. " , " tel que je le vois, oui. " , " c ' est le plus probable. " ,
" cela montre de bonnes perspectives. " , " certes. " , " les signes indiquent que oui. " , " ma réponse est oui. " , " ta question est trop floue, réessaie. " , " redemandes plus tard stp. " ,
" je ferais mieux de pas te le dire maintenant... " , " je ne peux pas le prédire actuellement :/ " , " concentre-toi et redemande. " , " n ' y comptes pas trop. " , " ma réponse est non. " ,
" mes sources disent que non. " , " les perspectives ne sont pas si bonnes... " , " c ' est très douteux. " ]
await ctx . send ( f " { ctx . author . mention } , { choice ( reponses ) } " )
@_8ball.error
async def _8ball_error ( self , ctx , error ) :
if str ( error ) == " question is a required argument that is missing. " :
await ctx . send ( " Mauvaise syntaxe : `.8ball/8b/8balls <question>`. " )
@commands.command ( name = ' pileouface ' , aliases = [ ' pf ' ] )
async def _pileouface ( self , ctx ) :
2020-12-23 02:20:34 +01:00
""" Pile ou face. \n ➡ Syntaxe: .pileouface/pf """
await ctx . message . add_reaction ( emoji = ' ✅ ' )
2020-11-29 11:59:49 +01:00
return await ctx . send ( f " { ' Pile ' if randint ( 0 , 1 ) == 1 else ' Face ' } ! " )
2020-12-23 02:20:34 +01:00
@commands.command ( name = ' mock ' )
async def _mock ( self , ctx ) :
""" Se moque du message précédent """
first = 0
suite_auteur = None
temps_limite = ( await ctx . message . channel . history ( limit = 2 ) . flatten ( ) ) [ 1 ] . created_at - timedelta ( minutes = 5 )
final_message = " "
async for message in ctx . message . channel . history ( limit = 20 , after = temps_limite , oldest_first = False ) :
if first == 0 :
first = 1
continue
if first == 1 :
final_message = message . content
first = 2
if suite_auteur :
if suite_auteur == message . author :
final_message = f " { message . content } \n { final_message } "
continue
else :
break
if message . author != ctx . author :
final_message = message . content
suite_auteur = message . author
urls = re . findall ( r ' http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!* \ ( \ ),]|(?: % [0-9a-fA-F][0-9a-fA-F]))+ ' , final_message )
for i in range ( 0 , len ( urls ) ) :
final_message = final_message . replace ( urls [ i ] , ' ' )
message = [ ]
message [ : 0 ] = final_message . lower ( )
for i in range ( 0 , len ( message ) ) :
if randint ( 0 , 1 ) == 1 :
message [ i ] = message [ i ] . upper ( )
await ctx . message . delete ( )
if len ( message ) > 0 :
return await ctx . send ( " " . join ( message ) . replace ( " \\ N " , " \n " ) . replace ( " \\ n " , " \n " ) )
else :
2020-12-25 04:20:27 +01:00
return await ctx . send ( " Le message ne contient aucun texte. " , delete_after = 5 )