103 lines
2.4 KiB
Python
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) |