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.
38 lines
934 B
38 lines
934 B
4 years ago
|
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()
|