from pluginmanager.pluginmanager import register_plugin, plugin class Cyber(plugin): name = "Cyber" def plugin_init(): pass def match(): return "(^|\s+)cyber" def send_message(message, match, nick): sp = match.span() return "Cyber Cyber Cyber! Cyber%s - https://youtu.be/WY6KkRsS26M" % message[sp[1] :].rstrip() register_plugin(Cyber, True)
from pluginmanager.pluginmanager import register_plugin, plugin class JanKenoJanssen(plugin): name = "Jan-Keno Janssen" # 0: Match on Private Message | 1: Match on Group Chat permissions = [True, True] def plugin_init(): JanKenoJanssen.wordlist = set() for line in open("pluginmanager/plugins/jan-keno_janssen.txt", "r"): JanKenoJanssen.wordlist.add("".join(line.split())) filter("", JanKenoJanssen.wordlist) JanKenoJanssen.words = "(^|\s+)(" JanKenoJanssen.words += "|".join(JanKenoJanssen.wordlist) JanKenoJanssen.words += ")" def match(): return JanKenoJanssen.words def send_message(message, match, nick): return "Jan-Keno Janssen regt das auf! - http://i.imgur.com/rO22R9u.png" def help(): return "Write a Jan-Keno Janssen word like these " + ", ".join(JanKenoJanssen.wordlist) register_plugin(JanKenoJanssen)
for uid in uid_list: # data contains url, page_title, message and user data = DatabaseLayer.search_uid(uid) if data != None: response += "\n" + data[0] + " (" + data[1] + ")" if len(data[2]) > 0: response += ": " + data[2] response += " - " + data[3] return response def help(): return "!link <link-numbers>, see !links" register_plugin(Link) class DatabaseLayer: db = None def init_db(): # Create new database and tables DatabaseLayer.db = boten_anna_db( "boten_anna.db", "url", [ "uid integer PRIMARY KEY", "url text", "page_title text",
from pluginmanager.pluginmanager import register_plugin, plugin class Next(plugin): name = 'Next' def plugin_init(): pass def match(): return '^!next' def send_message(message, match, nick): return 'Another satisfied customer! NEXT!' register_plugin(Next)
else: links = DatabaseLayer.get_links() # Format database dump to str: \n uid - url - title tag - message - nick - timestamp response = "" for link in links: response += "\n" for column in link: response += str(column) + " - " response = response[:len(response)-3] # without minus (-) at the end return response def help(): return '!links - Show all stored links with message, time and nick. Commands:\nAll links with the following nicks: !links <nicks>, all links from a begin - till an end: !links <id begin> <id end>, all links from 1 till an end: !links <id end>' register_plugin(Links) class DatabaseLayer: db = None def init_db(): # Create new database and tables DatabaseLayer.db = boten_anna_db("boten_anna.db",'url',['uid integer PRIMARY KEY', 'url text', 'page_title text', 'message text', 'user text', 'timestamp datetime default current_timestamp']) def get_links():
if len(data[1]) <= 0 or len(nick) <= 0: return dict(is_duplicated=False, reply="") else: if len(data[2]) > 0: stored_message = data[2] else: stored_message = "- Keine -" return dict( is_duplicated=True, reply= "%s du BoB! %s hat den Link: %s mit dem Titel: %s bereits %s geposted. Die Nachricht lautete %s" % (nick, data[3], url, data[1], data[4], stored_message)) register_plugin(WebsiteTitleGrabber, True) class LinkDatabase: db = None def __init__(self): logging.info("Initialized database") # Create new database and tables if not exists self.conn = sqlite3.connect("boten_anna.db", check_same_thread=False) self.__create_table__() def __create_table__(self): c = self.conn.cursor() c.execute(
from pluginmanager.pluginmanager import register_plugin, plugin class Next(plugin): name = 'Next' # 0: Match on Private Messages | 1: Match on Group Chat permissions = [True,True] def plugin_init(): pass def match(): return '^!next' def send_message(message,match,nick): return 'Another satisfied customer! NEXT!' register_plugin(Next)
data = DatabaseLayer.search_duplicated(url) if data != None: return True, data[0], data[1], data[2], data[3], data[4] else: return False, None, None, None, None, None def save_url(url,url_page_title,message,user): """ Save URL in Database """ return DatabaseLayer.insert(url,url_page_title,message,user) def help(): return 'Store links in database, pattern: http://www.url.tld/something/somepage.html#anchor or http://127.0.0.1/s/sp.html#anchor' register_plugin(WebsiteTitleGrabber,True) class DatabaseLayer: db = None def init_db(): # Create new database and tables DatabaseLayer.db = boten_anna_db("boten_anna.db",'url',['uid integer PRIMARY KEY', 'url text', 'page_title text', 'message text', 'user text', 'timestamp datetime default current_timestamp']) def insert(links, page_title, message, user):
from pluginmanager.pluginmanager import register_plugin, plugin import random class RandomNumber(plugin): name = 'Random number' def plugin_init(): pass def match(): return '^!(random-number)($|\s)' def send_message(message, match, nick): msg = message.split(' ')[1:] if len(msg) == 2 and msg[0].isdecimal() and msg[1].isdecimal(): try: return str(random.randint(int(msg[0]), int(msg[1]))) except ValueError as v: return 'Ouch %s that hurts, please try again with a valid number range' % nick else: return 'Usage:\n\t!random-number <range-begin> <range-end>' def help(): return 'Random number plugin\nUsage: !random-number <range-begin> <range-end>' register_plugin(RandomNumber)
from pluginmanager.pluginmanager import register_plugin, plugin class Beer(plugin): name = 'Beer' def plugin_init(): pass def match(): return '(^|\s+)(b([i]+|e)[e]+r)' def send_message(message, match, nick): return 'Kein Bier vor vier! - http://i.imgur.com/Bg4vMW3.jpg' register_plugin(Beer, True)
from pluginmanager.pluginmanager import register_plugin, plugin import random class RandomNumber(plugin): name = 'Random number' # 0: Match on Private Messages | 1: Match on Group Chat permissions = [True,True] def plugin_init(): pass def match(): return '^!(random-number)($|\s)' def send_message(message,match,nick): msg = message.split(' ')[1:] if len(msg) == 2 and msg[0].isdecimal() and msg[1].isdecimal(): try: return str(random.randint(int(msg[0]), int(msg[1]))) except ValueError as v: return 'Ouch %s that hurts, please try again with a valid number range' % nick else: return 'Usage:\n\t!random-number <range-begin> <range-end>' def help(): return 'Random number plugin\nUsage: !random-number <range-begin> <range-end>' register_plugin(RandomNumber)
from pluginmanager.pluginmanager import register_plugin, plugin class JanKenoJanssen(plugin): name = 'Jan-Keno Janssen' def plugin_init(): JanKenoJanssen.wordlist = set() for line in open('pluginmanager/plugins/jan-keno_janssen.txt', 'r'): JanKenoJanssen.wordlist.add(''.join(line.split())) filter("", JanKenoJanssen.wordlist) JanKenoJanssen.words = '(^|\s+)(' JanKenoJanssen.words += "|".join(JanKenoJanssen.wordlist) JanKenoJanssen.words += ')' def match(): return JanKenoJanssen.words def send_message(message, match, nick): return "Jan-Keno Janssen regt das auf! - http://i.imgur.com/rO22R9u.png" def help(): return "Write a Jan-Keno Janssen word like these " + ", ".join(JanKenoJanssen.wordlist) register_plugin(JanKenoJanssen, True)
from pluginmanager.pluginmanager import register_plugin, plugin class Beer(plugin): name = 'Beer' # 0: Match on Private Messages | 1: Match on Group Chat permissions = [True,True] def plugin_init(): pass def match(): return '(^|\s+)(b([i]+|e)[e]+r)' def send_message(message,match,nick): return 'Kein Bier vor vier! - http://i.imgur.com/Bg4vMW3.jpg' register_plugin(Beer)
from pluginmanager.pluginmanager import register_plugin, plugin class Cyber(plugin): name = 'Cyber' def plugin_init(): pass def match(): return '(^|\s+)cyber' def send_message(message, match, nick): sp = match.span() return 'Cyber Cyber Cyber! Cyber%s - https://youtu.be/WY6KkRsS26M' % message[sp[1]:].rstrip() register_plugin(Cyber, True)