import json import nio import simplematrixbotlib as botlib import commands data = json.loads(open('data.json').read()) dfaq = data["faq"] faq_text = dfaq["header"] + "".join(["\n"+q["question"]+"\n"+q["answer"] for q in dfaq["questions"]]) + "\n\n"+dfaq["footer"] creds = botlib.Creds( data["homeserver"], data['username'], data['password'] ) bot = botlib.Bot(creds) PREFIX = '!' def load_faq(): dfaq = json.loads(open('data.json').read())["faq"] return dfaq["header"] + "".join(["\n"+q["question"]+"\n"+q["answer"] for q in dfaq["questions"]]) + "\n\n"+dfaq["footer"] @bot.listener.on_message_event async def faq(room, message): match = botlib.MessageMatch(room, message, bot, PREFIX) if match.is_not_from_this_bot() and match.prefix() and match.command( "faq"): await bot.api.send_markdown_message( room.room_id, load_faq()) @bot.listener.on_custom_event(nio.InviteMemberEvent) async def example(room, event): if event.membership == "join": await bot.api.send_markdown_message( room.room_id, load_faq() ) def get_questions(): return json.loads(open('data.json').read())["faq"]["questions"] @bot.listener.on_message_event async def faqresponse(room, message): match = botlib.MessageMatch(room, message, bot, PREFIX) if match.is_not_from_this_bot(): response = "" questions = get_questions() for q in questions: if sum([ 1 for kp in q["key_phrases"] if kp in message.body]) == len(q["key_phrases"]): response += q["question"] + "\n" + q["answer"]+"\n" if response != "": await bot.api.send_markdown_message( room.room_id, response + dfaq["footer"] ) bot.run()