pyPlugins/main.py
2020-03-16 17:18:33 +11:00

103 lines
2.4 KiB
Python

#!/usr/bin/python3
import importlib
from pathlib import Path
from pprint import pprint
import sys
import time
import random
# List of loaded plugins
loadedPlugins = []
# Temp lists to store plugin info
tmpgenericHooks = []
tmpmessageHooks = []
tmpmentionHooks = []
# List of functions per hook
genericHooks = []
messageHooks = []
mentionHooks = []
messages = [{"name":"1","message":"message1"}, {"name":"2","message":"message2"}, {"name":"3","message":"Hey @ben sup"}, {"name":"test","message":"Hello World"},{"name":"Ben","message":"@1 sup"}]
def registerGenericHooks():
# Run this to run the registered hooks in a plugin
for x in tmpgenericHooks:
for y in x[1]:
genericHooks.append(getattr(sys.modules[f"{x[0]}"], f"{y}"))
def registerMessageHooks():
# Run this to run the registered hooks in a plugin
for x in tmpmessageHooks:
for y in x[1]:
messageHooks.append(getattr(sys.modules[f"{x[0]}"], f"{y}"))
def registerMentionHooks():
# Run this to run the registered hooks in a plugin
for x in tmpmentionHooks:
for y in x[1]:
mentionHooks.append(getattr(sys.modules[f"{x[0]}"], f"{y}"))
def buildHookList():
# Buld Generic hook lists
for x in loadedPlugins:
try:
tmpgenericHooks.append(x.genericHooks())
tmpmessageHooks.append(x.messageHooks())
tmpmentionHooks.append(x.mentionHooks())
except AttributeError as e:
print(f"{e}")
# pprint(loadedPlugins)
def loadPlugins():
p = Path("plugins/")
files = [x for x in p.iterdir() if x.suffix == ".py"]
for x in files:
mod = x.stem
loadedPlugins.append(importlib.import_module(f"plugins.{mod}"))
for x in loadedPlugins:
try:
x.pluginStart()
except AttributeError:
print(f"{x.__name__} failed to load as there is no pluginStart method")
def runGenericHooks():
for x in genericHooks:
x()
def runMessageHooks(msg):
for x in messageHooks:
x(msg)
def runMentionHooks(msg):
for x in mentionHooks:
x(msg)
def init():
loadPlugins()
buildHookList()
registerGenericHooks()
registerMessageHooks()
registerMentionHooks()
# pprint(hooks)
init()
while True:
runGenericHooks()
msg = random.choice(messages)
runMessageHooks(msg)
if "@" in msg['message']:
print("running mentions")
runMentionHooks(msg)
time.sleep(1)