forked from varia/bots
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
934 B
37 lines
934 B
from os.path import basename
|
|
from urllib.parse import urlparse
|
|
|
|
from xbotlib import Bot
|
|
|
|
|
|
class LogsBot(Bot):
|
|
"""Collaborative log writing."""
|
|
|
|
help = """Logging to https://logsbot.bots.varia.zone"""
|
|
|
|
def group(self, message):
|
|
"""Move group messages into the log."""
|
|
if not message.url:
|
|
return
|
|
|
|
if message.room not in self.db.keys():
|
|
self.db[message.room] = []
|
|
|
|
self.db[message.room].append(message.url)
|
|
|
|
filename = basename(urlparse(message.url).path)
|
|
return self.reply(f"Added {filename} 🤩️", room=message.room)
|
|
|
|
def serve(self, request):
|
|
"""Serve the log."""
|
|
payload = {"rooms": []}
|
|
|
|
for room in self.db.keys():
|
|
payload["rooms"].append(room)
|
|
payload[room] = {"urls": self.db[room]}
|
|
|
|
rendered = self.template.render(payload=payload)
|
|
return self.respond(rendered)
|
|
|
|
|
|
LogsBot()
|
|
|