"""formate un string avec des ` tout en gardant les mention et les liens"""
string=f"`{removeStartEndSpacesString(string)}`"
findedMention=getMentionInString(string)
foriinrange(0,len(findedMention)):
string=string.replace(findedMention[i],f"`{findedMention[i]}`")# conserve la mention dans le message
ifstring.startswith("``<@"):# conserve le format quand mention au début de la string
string=string[2:]
ifstring.endswith(">``"):# conserve le format quand mention à la fin de la string
string=string[:-2]
string=string.replace("``","")# conserve le format quand deux mentions sont collés
returnstring
defgetMentionInString(string):
"""récupère les mentions dans un string"""
findedMention=[]
forfindingMentioninre.findall(r'<@[!]?\d*>',string):# récupération mention dans le string
findedMention.append(findingMention)
findedMention=list(dict.fromkeys(findedMention))# suppression doublon de mention dans la liste
returnfindedMention
defgetURLsInString(string):
"""récupère les liens dans un string"""
findedURLs=[]
forfindingMentioninre.findall(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+',string):# récupération URLs dans le string
findedURLs.append(findingMention)
returnfindedURLs
defremoveStartEndSpacesString(string):
"""Retire les espaces en trop au début et à la fin d'un string"""
whilestring.startswith(""):
string=string[1:]
whilestring.endswith(""):
string=string[:-1]
returnstring
defrandomImage(link):
"""Récupération d'une image aléatoirement"""
temps_requete=int(round(time.time()*1000))
try:
request_data=requests.get(link)
exceptExceptionase:
raiseException(f"Une erreur s'est produite lors de la tentative de demande de l'API {link} : {e}")
ifnotrequest_data.status_code==200:
raiseException(f"Code HTTP {request_data.status_code} au lieu de HTTP 200 à l'appel de {link} : {request_data.text}")
try:
json_data=json.loads(request_data.text)
exceptExceptionase:
raiseException(f"Erreur lors de la transformation les données de {link} en json : {e}")