A place for all our bot adventures.
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.
 
 
 
 

102 lines
2.7 KiB

from xbotlib import Bot
import json
import jinja2
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')
class logbot(Bot):
help = '''Oh dear, logbot is here!
(You can speak to the bot using @logbot or logbot:)
<image>: Your image is added to the log.
logbot @help: Print this message
logbot @add <message>: Add a message to the log.
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):
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:
# messages = writedb(f'<img src="{ message.url }">')
reply = 'Thanks for that image!'
elif '@add' in message.text:
add_to_db(self, message)
reply = 'Added, thanks!'
elif '@delete' in message.text:
match = re.findall("@delete \d*", message.content)[0]
key = str(match.replace('@delete ',''))
if key in self.db[message.room]:
print('To be deleted:', self.db[message.room][key])
reply = f'This message is deleted: { self.db[message.room][key] }'
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()