Browse Source

updating logbot to the latest version of xbotlib .... woosh

master
manetta 3 years ago
parent
commit
80f9ef4232
  1. BIN
      LogBot/avatar.1.png
  2. BIN
      LogBot/avatar.png
  3. 6
      LogBot/index.html.j2
  4. 163
      LogBot/logbot.py
  5. 3
      LogBot/stylesheet.css

BIN
LogBot/avatar.1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
LogBot/avatar.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 15 KiB

6
LogBot/index.html.j2

@ -6,12 +6,12 @@
<link rel="stylesheet" type="text/css" href="stylesheet.css"> <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head> </head>
<body> <body>
<h1>OMG</h1> <h1>{{ room }}</h1>
{% for num, msg in messages.items() %} {% for num, msg in db.items() %}
<div class="post"> <div class="post">
<p class="id">({{ num }})</p> <p class="key">({{ num }})</p>
<p class="message">{{ msg }}</p> <p class="message">{{ msg }}</p>
</div> </div>

163
LogBot/logbot.py

@ -2,92 +2,101 @@ from xbotlib import Bot
import json import json
import jinja2 import jinja2
import re import re
import os
import shutil
output = './'
def add_to_db(self, message):
keys = [int(x) for x in self.db[message.room].keys()]
if not keys:
new_key = '0'
else:
new_key = str(keys[-1] + 1)
self.db[message.room][new_key] = message.content
def del_from_db(self, message, key):
del self.db[message.room][key]
def write_log(self, message):
template_file = 'index.html.j2' # Hmm... how to read the self.template ?
print('using the template: ', template_file)
template = jinja2.Template(open(template_file).read())
if not os.path.isdir(message.room):
os.mkdir(message.room)
shutil.copy('stylesheet.css', message.room)
with open(f'{ output }/{ message.room }/index.html','w') as out:
html = template.render(room=message.room, db=self.db[message.room])
out.write(html)
print('writing to: ', f'{ message.room }/index.html')
db = 'storage.json'
def readdb():
storage = open(db, 'r').read()
messages = json.loads(storage)
return messages
def writedb(message):
try:
with open(db, 'r') as storage:
messages = json.loads(storage.read())
if messages.keys():
keys = [int(x) for x in messages.keys()]
keys.sort()
lastid = keys[-1]
nextid = lastid + 1
else:
nextid = 0
messages[f'{ nextid }'] = message
storage = open(db, 'w')
storage.write(json.dumps(messages, indent=4))
except IOError:
with open(db, 'w') as storage:
storage.write(json.dumps('{}'))
writedb(message)
return messages
def deletefromdb(id):
with open(db, 'r') as storage:
messages = json.loads(storage.read())
del messages[id]
storage = open(db, 'w')
storage.write(json.dumps(messages, indent=4))
return messages
def writelog(messages):
template = jinja2.Template(open('index.html.j2').read())
with open('log.html','w') as out:
html = template.render(messages=messages)
out.write(html)
class logbot(Bot): class logbot(Bot):
help = '''Oh dear, logbot is here! help = '''Oh dear, logbot is here!
@delete <num> (You can speak to the bot using @logbot or logbot:)
Delete posts from the log.
For example: @logbot @delete 5
@bots <image>: Your image is added to the log.
To see who is around :)
@uptime logbot @help: Print this message
To check how long @logbot has been around
@help logbot @add <message>: Add a message to the log.
Print this message
logbot @delete <num>: Delete posts from the log. For example: @logbot @delete 5
logbot @title <string>: Set the title of your log. [future-feature]
logbot @style <element> <css-rule>: Edit the css of your log. For example: logbot @style body background-color: pink; [future-feature]
logbot @uptime: To check how long @logbot has been around
@bots: To see who is around :)
''' '''
def group(self, message): def group(self, message):
print(message.content)
messages = readdb() if not message.room in self.db.keys():
self.db[message.room] = {}
if message.url:
messages = writedb(f'<img src="{ message.url }">') # to debug in the terminal
reply = 'Thanks for that image!' print('------------------')
print('message: ', message.text)
elif '@delete' in message.text: print('room: ', message.room)
match = re.findall("@delete \d*", message.content)[0] print('sender: ', message.sender)
id = match.replace('@delete ','')
if id in messages: if message.url:
print('To be deleted:', messages[str(id)]) # messages = writedb(f'<img src="{ message.url }">')
reply = f'This message is deleted: { messages[str(id)] }' reply = 'Thanks for that image!'
messages = deletefromdb(id)
else: elif '@add' in message.text:
reply = 'This message is already gone!' add_to_db(self, message)
reply = 'Added, thanks!'
elif '@help' in message.text:
print('HELP') elif '@delete' in message.text:
match = re.findall("@delete \d*", message.content)[0]
else: key = str(match.replace('@delete ',''))
messages = writedb(message.text)
reply = 'Added, thanks!' if key in self.db[message.room]:
print('To be deleted:', self.db[message.room][key])
writelog(messages) reply = f'This message is deleted: { self.db[message.room][key] }'
return self.reply(reply, room=message.room) del_from_db(self, message, key)
else:
reply = 'This message is already gone!'
elif '@help' in message.text:
print('HELP')
elif '@title' in message.text:
reply = 'This is a future-feature ...'
elif '@style' in message.text:
reply = 'This is a future-feature ...'
else:
reply = 'Hmm ... not sure what you want to do?'
write_log(self, message)
return self.reply(reply, room=message.room)
logbot() logbot()

3
LogBot/stylesheet.css

@ -1,12 +1,11 @@
body{ body{
background-color: pink;
margin: 1em; margin: 1em;
} }
.post{ .post{
margin: 1em 0; margin: 1em 0;
clear: both; clear: both;
} }
.post p.id{ .post p.key{
float: left; float: left;
margin: 0 1em 1em; margin: 0 1em 1em;
} }

Loading…
Cancel
Save