forked from varia/bots
updating logbot to the latest version of xbotlib .... woosh
This commit is contained in:
parent
00805bc7e7
commit
80f9ef4232
BIN
LogBot/avatar.1.png
Normal file
BIN
LogBot/avatar.1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
Binary file not shown.
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 15 KiB |
@ -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>
|
||||||
|
|
||||||
|
121
LogBot/logbot.py
121
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
|
||||||
|
|
||||||
db = 'storage.json'
|
output = './'
|
||||||
|
|
||||||
def readdb():
|
def add_to_db(self, message):
|
||||||
storage = open(db, 'r').read()
|
keys = [int(x) for x in self.db[message.room].keys()]
|
||||||
messages = json.loads(storage)
|
if not keys:
|
||||||
return messages
|
new_key = '0'
|
||||||
|
|
||||||
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:
|
else:
|
||||||
nextid = 0
|
new_key = str(keys[-1] + 1)
|
||||||
messages[f'{ nextid }'] = message
|
self.db[message.room][new_key] = message.content
|
||||||
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):
|
def del_from_db(self, message, key):
|
||||||
with open(db, 'r') as storage:
|
del self.db[message.room][key]
|
||||||
messages = json.loads(storage.read())
|
|
||||||
del messages[id]
|
|
||||||
storage = open(db, 'w')
|
|
||||||
storage.write(json.dumps(messages, indent=4))
|
|
||||||
return messages
|
|
||||||
|
|
||||||
def writelog(messages):
|
def write_log(self, message):
|
||||||
template = jinja2.Template(open('index.html.j2').read())
|
template_file = 'index.html.j2' # Hmm... how to read the self.template ?
|
||||||
with open('log.html','w') as out:
|
print('using the template: ', template_file)
|
||||||
html = template.render(messages=messages)
|
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)
|
out.write(html)
|
||||||
|
print('writing to: ', f'{ message.room }/index.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] = {}
|
||||||
|
|
||||||
|
# to debug in the terminal
|
||||||
|
print('------------------')
|
||||||
|
print('message: ', message.text)
|
||||||
|
print('room: ', message.room)
|
||||||
|
print('sender: ', message.sender)
|
||||||
|
|
||||||
if message.url:
|
if message.url:
|
||||||
messages = writedb(f'<img src="{ message.url }">')
|
# messages = writedb(f'<img src="{ message.url }">')
|
||||||
reply = 'Thanks for that image!'
|
reply = 'Thanks for that image!'
|
||||||
|
|
||||||
|
elif '@add' in message.text:
|
||||||
|
add_to_db(self, message)
|
||||||
|
reply = 'Added, thanks!'
|
||||||
|
|
||||||
elif '@delete' in message.text:
|
elif '@delete' in message.text:
|
||||||
match = re.findall("@delete \d*", message.content)[0]
|
match = re.findall("@delete \d*", message.content)[0]
|
||||||
id = match.replace('@delete ','')
|
key = str(match.replace('@delete ',''))
|
||||||
if id in messages:
|
|
||||||
print('To be deleted:', messages[str(id)])
|
if key in self.db[message.room]:
|
||||||
reply = f'This message is deleted: { messages[str(id)] }'
|
print('To be deleted:', self.db[message.room][key])
|
||||||
messages = deletefromdb(id)
|
reply = f'This message is deleted: { self.db[message.room][key] }'
|
||||||
|
del_from_db(self, message, key)
|
||||||
else:
|
else:
|
||||||
reply = 'This message is already gone!'
|
reply = 'This message is already gone!'
|
||||||
|
|
||||||
elif '@help' in message.text:
|
elif '@help' in message.text:
|
||||||
print('HELP')
|
print('HELP')
|
||||||
|
|
||||||
else:
|
elif '@title' in message.text:
|
||||||
messages = writedb(message.text)
|
reply = 'This is a future-feature ...'
|
||||||
reply = 'Added, thanks!'
|
|
||||||
|
|
||||||
writelog(messages)
|
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)
|
return self.reply(reply, room=message.room)
|
||||||
|
|
||||||
logbot()
|
logbot()
|
||||||
|
@ -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…
Reference in New Issue
Block a user