Stages 1 + 2 complete
This commit is contained in:
parent
19db2a16fe
commit
d083e79d8e
5 changed files with 95 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
data.json
|
0
commands.py
Normal file
0
commands.py
Normal file
27
data-example.json
Normal file
27
data-example.json
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
"username":"bot",
|
||||||
|
"password":"hunter2",
|
||||||
|
"homeserver":"http://localhost:8008",
|
||||||
|
"faq":{
|
||||||
|
"header":"# Simple example FAQ",
|
||||||
|
"questions":[
|
||||||
|
{
|
||||||
|
"question":"# What is the meaning of life?",
|
||||||
|
"answer":"42.",
|
||||||
|
"key_phrases":["meaning","life"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"question":"# Who is the coolest pokemon?",
|
||||||
|
"answer":"Mewtwo! 🐈",
|
||||||
|
"key_phrases":["coolest","pokemon"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"question":"# What is the coolest programming language?",
|
||||||
|
"answer":"🐍 python!",
|
||||||
|
"key_phrases":["coolest","programming","language"]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"footer":"Brought to you by Nerve\nSee the [code](https://codeberg.org/gabe/Nerve)"
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
66
main.py
Normal file
66
main.py
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
import json
|
||||||
|
import nio
|
||||||
|
import simplematrixbotlib as botlib
|
||||||
|
|
||||||
|
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 autofaq(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()
|
||||||
|
print("Message:",message)
|
||||||
|
for q in questions:
|
||||||
|
if sum([ 1 for kp in q["key_phrases"] if kp in message.body]) == len(q["key_phrases"]):
|
||||||
|
response = response + q["question"] + "\n" + q["answer"]+"\n"
|
||||||
|
if response != "":
|
||||||
|
await bot.api.send_markdown_message(
|
||||||
|
room.room_id,
|
||||||
|
response
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
bot.run()
|
1
session.txt
Normal file
1
session.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
b'gAAAAABiFeXXt9WhUOMhWlxqijC3oTqJQNEDa4ulqGG2V5TRO45uGBye2P2GL7B2Kg8W4UQDkcIG2Ihx6dX4ViTpWnlZx0oF-g=='
|
Loading…
Reference in a new issue