generated from Nemesis/Exemple
quote
This commit is contained in:
parent
1676a62a17
commit
36aa455ad1
1 changed files with 138 additions and 1 deletions
139
asmodee.py
139
asmodee.py
|
@ -14,6 +14,9 @@ import asyncio
|
|||
import nio
|
||||
|
||||
from datetime import datetime,timedelta
|
||||
import requests
|
||||
import html2text
|
||||
import json
|
||||
|
||||
# Var
|
||||
bot = None
|
||||
|
@ -652,7 +655,10 @@ async def msg(room,mess,sender,content=False):
|
|||
except:
|
||||
print(mess)
|
||||
print("id : " + str(room.room_id) + " message : " + str(mess))
|
||||
await bot.api.send_text_message(room.room_id, mess)
|
||||
if (content):
|
||||
await bot.api.send_markdown_message(room.room_id, mess)
|
||||
else:
|
||||
await bot.api.send_text_message(room.room_id, mess)
|
||||
except:
|
||||
print("Impossible d'envoyer le message")
|
||||
|
||||
|
@ -861,6 +867,7 @@ async def verifPMRoom(room, message): # Pour obtenir ou créer un salon pour les
|
|||
else:
|
||||
prive[sender]=salon.room_id
|
||||
return(salon)
|
||||
#TODO : room_delete_alias(access_token, room_alias)
|
||||
|
||||
async def biere(room,message): # Gestion des boissons
|
||||
global modules
|
||||
|
@ -1188,6 +1195,136 @@ async def bienvenue(room,message): # Affichage d'un message d'accueil aux nouvea
|
|||
else:
|
||||
print("current: " + membership + " prev: " + prev_member)
|
||||
|
||||
async def titre(room, message): # cherche le titre d'une page
|
||||
global modules
|
||||
try:
|
||||
rmod = modules[room.room_id, 'titre']
|
||||
except:
|
||||
modules[room.room_id, 'titre'] = False
|
||||
if (modules[room.room_id, 'titre']):
|
||||
args = getMessage(message).split()
|
||||
sender = getUser(message)
|
||||
args.pop(0)
|
||||
try:
|
||||
invidious = modules[room.room_id, 'invidious']
|
||||
except:
|
||||
invidious = False
|
||||
try:
|
||||
url=args[0]
|
||||
print(url)
|
||||
if (re.search(r"^.*://",url) is None):
|
||||
url = "http://" + url
|
||||
r = requests.get(url)
|
||||
res = re.search(r"<title>(.*)</title>",r.text)
|
||||
if (res is not None):
|
||||
await msg(room,html2text.html2text(str(re.sub("</?title>", "", res.group()))),sender)
|
||||
else:
|
||||
await msg(room,"Titre non trouvé",sender)
|
||||
if (re.search(r"http[s]?://(www\.)?youtube\.",url) is not None and invidious is False):
|
||||
res = re.sub(r"^.*\?v=(\w+).*$", r"\1", url, 0, re.MULTILINE)
|
||||
await msg(room,str("https://invidious.fdn.fr/watch?v=" + res),sender)
|
||||
except:
|
||||
await msg(room,"URL invalide",sender)
|
||||
|
||||
async def addquote(room,message): # enregistrer les citations mode reponses matrix
|
||||
global modules
|
||||
try:
|
||||
rmod = modules[room.room_id, 'quote']
|
||||
except:
|
||||
modules[room.room_id, 'quote'] = False
|
||||
if (modules[room.room_id, 'quote']):
|
||||
global citations
|
||||
|
||||
content = getMessage(message)
|
||||
sender = getUser(message)
|
||||
if len(content) > 42:
|
||||
# Récupération de l'auteur
|
||||
auteur = "Un nain connu"
|
||||
match = re.search(r"<(@\w+:\w+.\w+)>", content)
|
||||
if match:
|
||||
auteur = match.group(1)
|
||||
nick = room.user_name(auteur)
|
||||
|
||||
# Enlève la commande de la citation
|
||||
try:
|
||||
content = content.replace("\n!addquote", " ")
|
||||
content = content.replace("\n!", "\n")
|
||||
content = content.replace("<p>!addquote</p>\n", "")
|
||||
content = content.replace("<p>!", "<p>")
|
||||
content = content.replace("<"+auteur+">",nick+" <"+auteur+">")
|
||||
except:
|
||||
print("erreur content " + content)
|
||||
|
||||
# Id
|
||||
tps = datetime.now().microsecond
|
||||
|
||||
# récupérations des citations du salon
|
||||
famous = {}
|
||||
try:
|
||||
famous = citations[room.room_id]
|
||||
except:
|
||||
famous = {}
|
||||
|
||||
# enregistrement de la citation
|
||||
famous[auteur,tps] = content
|
||||
citations[room.room_id] = famous
|
||||
await bot.api.send_markdown_message(room_id=room.room_id,message="Ajout de la citation de " + nick + ":\n" + content)
|
||||
|
||||
async def showquote(room, message): # afficher les citations mode reponse matrix
|
||||
global modules
|
||||
try:
|
||||
rmod = modules[room.room_id, 'quote']
|
||||
except:
|
||||
modules[room.room_id, 'quote'] = False
|
||||
if (modules[room.room_id, 'quote']):
|
||||
args = getMessage(message).split()
|
||||
sender = getUser(message)
|
||||
args.pop(0)
|
||||
famous = {}
|
||||
try:
|
||||
famous = citations[room.room_id]
|
||||
except:
|
||||
famous = {}
|
||||
|
||||
if (len(args) == 1):
|
||||
# cite une quote d'une personne precise
|
||||
nick = args[0]
|
||||
phrases = []
|
||||
for cle,valeur in famous.items():
|
||||
if (cle[0] == nick):
|
||||
phrases.append(valeur)
|
||||
if (len(phrases) > 0 ):
|
||||
await reponses(room,phrases,True)
|
||||
else:
|
||||
await msg(room,"Je n'ai pas de citations pour " + nick,sender)
|
||||
else:
|
||||
# cite une quote aleatoire
|
||||
phrases = []
|
||||
for cle,valeur in famous.items():
|
||||
phrases.append(valeur)
|
||||
if (len(phrases) > 0 ):
|
||||
await reponses(room,phrases,True)
|
||||
else:
|
||||
await msg(room,"Je n'ai pas de citations pour ce salon",sender)
|
||||
|
||||
@bot.listener.on_message_event
|
||||
async def callShowquote(room, message):
|
||||
match = botlib.MessageMatch(room, message, bot, PREFIX)
|
||||
if match.is_not_from_this_bot() and match.prefix() and match.command("quote"):
|
||||
await showquote(room, message)
|
||||
|
||||
@bot.listener.on_message_event
|
||||
async def callAddquote(room, message):
|
||||
match = botlib.MessageMatch(room, message, bot)
|
||||
if match.is_not_from_this_bot() and match.contains("!addquote"):
|
||||
await addquote(room, message)
|
||||
|
||||
@bot.listener.on_message_event
|
||||
async def callTitre(room, message):
|
||||
match = botlib.MessageMatch(room, message, bot, PREFIX)
|
||||
if match.is_not_from_this_bot() and match.prefix() and match.command("titre"):
|
||||
await titre(room, message)
|
||||
|
||||
@bot.listener.on_custom_event(nio.RoomMemberEvent)
|
||||
async def callBienvenue(room, message):
|
||||
match = botlib.MessageMatch(room, message, bot)
|
||||
|
|
Loading…
Reference in a new issue