Browse Source

quote

master
nemesis 2 years ago
parent
commit
36aa455ad1
  1. 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…
Cancel
Save