geksbot-matrix/geeksbot.py
2019-10-19 10:10:52 -08:00

43 lines
1.4 KiB
Python

import json
import asyncio
from nio import (AsyncClient, RoomMessageText)
import logging
log_format = '%(asctime)s ||| %(name)s | %(levelname)s | %(message)s'
logging.basicConfig(format=log_format, level=logging.INFO)
logger = logging.getLogger('geeksbot')
logger.setLevel(logging.INFO)
class Geeksbot(AsyncClient):
def __init__(self, base_url, username, password):
self.base_url = base_url
self.username = username
self.password = password
super(Geeksbot, self).__init__(self.base_url, self.username)
self.add_event_callback(self.on_message, RoomMessageText)
async def login(self):
await super(Geeksbot, self).login(self.password)
async def on_message(self, room, event):
logger.info(f'Message recieved for room {room.display_name} | {room.user_name(event.sender)}: {event.body}')
if event.body.startswith('$say '):
msg = {
"body": event.body.split(' ', 1)[1],
"msgtype": 'm.text'
}
print(msg)
resp = await self.room_send(room.room_id, 'm.room.message', msg)
print(resp)
async def main():
with open('config.json') as f:
config = json.load(f)
client = Geeksbot(**config)
await client.login()
await client.sync_forever(timeout=1000)
asyncio.get_event_loop().run_until_complete(main())