Move most code in root directory to src/

This commit is contained in:
jesopo 2018-09-24 15:13:27 +01:00
parent da7e02ffc9
commit ecb9d7cb3f
64 changed files with 93 additions and 90 deletions

View file

@ -1,5 +1,5 @@
import random
import Utils
from src import Utils
CHOICES = [
"Definitely",

View file

@ -1,4 +1,4 @@
import Utils
from src import Utils
class Module(object):
def __init__(self, bot, events, exports):

View file

@ -1,4 +1,4 @@
import Utils
from src import Utils
class Module(object):
_name = "AutoMode"

View file

@ -1,4 +1,4 @@
import Utils
from src import Utils
class Module(object):
_name = "BTC"

View file

@ -1,5 +1,5 @@
import json, re
import Utils
from src import Utils
URL_GOOGLEBOOKS = "https://www.googleapis.com/books/v1/volumes"
URL_BOOKINFO = "https://books.google.co.uk/books?id=%s"

View file

@ -1,4 +1,4 @@
import Utils
from src import Utils
class Module(object):
_name = "Channel Op"

View file

@ -1,7 +1,7 @@
#--require-config virustotal-api-key
import re
import Utils
from src import Utils
URL_VIRUSTOTAL = "https://www.virustotal.com/vtapi/v2/url/report"
RE_URL = re.compile(r"https?://\S+", re.I)

View file

@ -1,5 +1,5 @@
import datetime, decimal, math, random, re, time
import Utils
from src import Utils
SIDES = {"heads": 0, "tails": 1}
DEFAULT_REDEEM_DELAY = 600 # 600 seconds, 10 minutes

View file

@ -1,5 +1,5 @@
import re
import EventManager, Utils
from src import EventManager, Utils
STR_MORE = "%s (more...)" % Utils.FONT_RESET
STR_CONTINUED = "(...continued) "

View file

@ -1,5 +1,5 @@
import datetime
import Utils
from src import Utils
class Module(object):
def __init__(self, bot, events, exports):

View file

@ -1,7 +1,7 @@
#--require-config wordnik-api-key
import Utils
import time
from src import Utils
URL_WORDNIK = "https://api.wordnik.com/v4/word.json/%s/definitions"
URL_WORDNIK_RANDOM = "https://api.wordnik.com/v4/words.json/randomWord"

View file

@ -1,5 +1,5 @@
import random
import Utils
from src import Utils
class Module(object):
def __init__(self, bot, events, exports):

View file

@ -1,9 +1,7 @@
import random
from operator import itemgetter
from time import time
import EventManager
import Utils
from src import EventManager, Utils
DUCK_TAIL = "・゜゜・。。・゜゜"
DUCK_HEAD = ["\_o< ", "\_O< ", "\_0< ", "\_\u00f6< ", "\_\u00f8< ",

View file

@ -1,5 +1,5 @@
import socket
import Utils
from src import Utils
EVAL_URL = "https://eval.appspot.com/eval"

View file

@ -1,4 +1,4 @@
import Utils
from src import Utils
URL_GEOIP = "http://ip-api.com/json/%s"

View file

@ -1,7 +1,7 @@
#--require-config google-api-key
#--require-config google-search-id
import Utils
from src import Utils
URL_GOOGLESEARCH = "https://www.googleapis.com/customsearch/v1"

View file

@ -1,4 +1,4 @@
import Utils
from src import Utils
URL_HAVEIBEENPWNEDAPI = "https://haveibeenpwned.com/api/v2/breachedaccount/%s"
URL_HAVEIBEENPWNED = "https://haveibeenpwned.com/"

View file

@ -1,7 +1,7 @@
#--require-config omdbapi-api-key
import json
import Utils
from src import Utils
URL_OMDB = "http://www.omdbapi.com/"
URL_IMDBTITLE = "http://imdb.com/title/%s"

View file

@ -1,5 +1,5 @@
import time
import Utils
from src import Utils
SECONDS_MAX = Utils.SECONDS_WEEKS*8
SECONDS_MAX_DESCRIPTION = "8 weeks"

View file

@ -1,5 +1,5 @@
import re
import Utils
from src import Utils
ISGD_API_URL = "https://is.gd/create.php"
REGEX_URL = re.compile("https?://", re.I)

View file

@ -1,5 +1,5 @@
import re, time
import EventManager, Utils
from src import EventManager, Utils
REGEX_KARMA = re.compile("^(.*[^-+])[-+]*(\+{2,}|\-{2,})$")
KARMA_DELAY_SECONDS = 3

View file

@ -1,7 +1,7 @@
#--require-config lastfm-api-key
import Utils
from datetime import datetime, timezone
from src import Utils
URL_SCROBBLER = "http://ws.audioscrobbler.com/2.0/"

View file

@ -1,4 +1,4 @@
import ModuleManager
from src import ModuleManager
class Module(object):
def __init__(self, bot, events, exports):

View file

@ -1,5 +1,5 @@
import base64
import EventManager
from src import EventManager
class Module(object):
def __init__(self, bot, events, exports):

View file

@ -2,7 +2,7 @@ import collections, re, time
from datetime import datetime, date
from collections import Counter
import Utils
from src import Utils
from suds.client import Client
from suds import WebFault

View file

@ -1,4 +1,4 @@
import EventManager
from src import EventManager
class Module(object):
def __init__(self, bot, events, exports):

View file

@ -1,4 +1,4 @@
import ModuleManager, Utils
from src import ModuleManager, Utils
class Module(ModuleManager.BaseModule):
@Utils.hook("received.command.ping", help="Ping pong!")

View file

@ -1,5 +1,5 @@
import datetime
import EventManager
from src import EventManager
class Module(object):
def __init__(self, bot, events, exports):

View file

@ -1,5 +1,5 @@
import re, traceback
import Utils
from src import Utils
REGEX_SPLIT = re.compile("(?<!\\\\)/")
REGEX_SED = re.compile("^s/")

View file

@ -1,5 +1,5 @@
import time
import Utils
from src import Utils
class Module(object):
def __init__(self, bot, events, exports):

View file

@ -1,5 +1,5 @@
import random
import Utils
from src import Utils
INSULT_INTRO = ["Thou art a", "Ye", "Thou", "Thy", "Thee"]

View file

@ -1,5 +1,5 @@
import signal
import Config
from src import Config
class Module(object):
def __init__(self, bot, events, exports):

View file

@ -1,7 +1,7 @@
#--require-config soundcloud-api-key
import json, re, time
import Utils
from src import Utils
URL_SOUNDCLOUD_TRACK = "http://api.soundcloud.com/tracks"
URL_SOUNDCLOUD_RESOLVE = "http://api.soundcloud.com/resolve"

View file

@ -1,5 +1,5 @@
import json
import Utils
from src import Utils
URL_SPOTIFY = "https://api.spotify.com/v1/search"

View file

@ -1,5 +1,5 @@
import time
import Utils
from src import Utils
class Module(object):
def __init__(self, bot, events, exports):

View file

@ -1,5 +1,5 @@
import collections, datetime, re
import Utils
from src import Utils
URL_BUS = "https://api.tfl.gov.uk/StopPoint/%s/Arrivals"
URL_BUS_SEARCH = "https://api.tfl.gov.uk/StopPoint/Search/%s"

View file

@ -1,6 +1,6 @@
#--require-config bighugethesaurus-api-key
import Utils
from src import Utils
URL_THESAURUS = "http://words.bighugelabs.com/api/2/%s/%s/json"

View file

@ -1,5 +1,5 @@
import re
import Utils
from src import Utils
REGEX_URL = re.compile("https?://\S+", re.I)

View file

@ -1,4 +1,4 @@
import EventManager
from src import EventManager
class Module(object):
def __init__(self, bot, events, exports):

View file

@ -1,6 +1,6 @@
#--require-config trakt-api-key
import Utils
from src import Utils
URL_TRAKT = "https://api-v2launch.trakt.tv/users/%s/watching"
URL_TRAKTSLUG = "https://trakt.tv/%s/%s"

View file

@ -1,5 +1,5 @@
import json, re
import Utils
from src import Utils
URL_TRANSLATE = "http://translate.googleapis.com/translate_a/single"
URL_LANGUAGES = "https://cloud.google.com/translate/docs/languages"

View file

@ -5,7 +5,7 @@
import datetime, re, time, traceback
import twitter
import Utils
from src import Utils
REGEX_TWITTERURL = re.compile(
"https?://(?:www\.)?twitter.com/[^/]+/status/(\d+)", re.I)

View file

@ -1,4 +1,4 @@
import Utils
from src import Utils
UPCITEMDB_URL = "https://api.upcitemdb.com/prod/trial/lookup"

View file

@ -1,5 +1,5 @@
import json, re
import Utils
from src import Utils
URL_URBANDICTIONARY = "http://api.urbandictionary.com/v0/define"
REGEX_DEFNUMBER = re.compile("-n(\d+) \S+")

View file

@ -1,6 +1,6 @@
#--require-config openweathermap-api-key
import Utils
from src import Utils
URL_WEATHER = "http://api.openweathermap.org/data/2.5/weather"

View file

@ -1,4 +1,4 @@
import Utils
from src import Utils
URL_WIKIPEDIA = "https://en.wikipedia.org/w/api.php"

View file

@ -1,6 +1,6 @@
#--require-config wolframalpha-api-key
import json
import Utils
from src import Utils
URL_WA = "https://api.wolframalpha.com/v1/result"

View file

@ -1,5 +1,5 @@
import time
import Utils
from src import Utils
class Module(object):
def __init__(self, bot, events, exports):

View file

@ -1,7 +1,7 @@
#--require-config google-api-key
import re
import Utils
from src import Utils
REGEX_YOUTUBE = re.compile(
"https?://(?:www.)?(?:youtu.be/|youtube.com/watch\?[\S]*v=)([\w\-]{11})",

View file

@ -1,11 +1,10 @@
import configparser, os
class Config(object):
def __init__(self, bot, location="bot.conf"):
def __init__(self, bot, directory, filename="bot.conf"):
self.bot = bot
self.location = location
self.full_location = os.path.join(bot.bot_directory,
self.location)
self.filename = filename
self.full_location = os.path.join(directory, filename)
self.bot.config = {}
self.load_config()

View file

@ -239,11 +239,10 @@ class UserChannelSettings(Table):
[user_id, channel_id, setting.lower()])
class Database(object):
def __init__(self, bot, location="bot.db"):
def __init__(self, bot, directory, filename="bot.db"):
self.bot = bot
self.location = location
self.full_location = os.path.join(bot.bot_directory,
self.location)
self.filename = filename
self.full_location = os.path.join(directory, filename)
self.database = sqlite3.connect(self.full_location,
check_same_thread=False, isolation_level=None)
self.database.execute("PRAGMA foreign_keys = ON")

View file

@ -1,7 +1,6 @@
import os, select, sys, threading, time, traceback, uuid
import EventManager, Exports, IRCLineHandler, IRCServer, Logging
import ModuleManager, Timer
from . import EventManager, Exports, IRCLineHandler, IRCServer, Logging
from . import ModuleManager, Timer
class Bot(object):
def __init__(self):
@ -14,15 +13,13 @@ class Bot(object):
self.servers = {}
self.running = True
self.poll = select.epoll()
self._events = EventManager.EventHook(self)
self._exports = Exports.Exports()
self.modules = ModuleManager.ModuleManager(self, self._events,
self._exports)
self.log = Logging.Log(self)
self.line_handler = IRCLineHandler.LineHandler(self, self._events)
self.timers = []
self._events.on("timer.reconnect").hook(self.reconnect)
self._events.on("boot.done").hook(self.setup_timers)
self._events = None
self._exports = None
self.modules = None
self.log = None
self.line_handler = None
def add_server(self, server_id, connect=True):
(_, alias, hostname, port, password, ipv4, tls, nickname,

View file

@ -1,5 +1,5 @@
import re
import Utils
from . import Utils
class BufferLine(object):
def __init__(self, sender, message, action, from_self):

View file

@ -1,5 +1,5 @@
import uuid
import IRCBuffer, Utils
from . import IRCBuffer, Utils
class Channel(object):
def __init__(self, name, id, server, bot):

View file

@ -1,5 +1,5 @@
import re, threading
import Utils
from . import Utils
RE_PREFIXES = re.compile(r"\bPREFIX=\((\w+)\)(\W+)(?:\b|$)")
RE_CHANMODES = re.compile(

View file

@ -1,5 +1,5 @@
import collections, socket, ssl, sys, time
import IRCChannel, IRCUser, Utils
from . import IRCChannel, IRCUser, Utils
THROTTLE_LINES = 4
THROTTLE_SECONDS = 1

View file

@ -1,5 +1,5 @@
import uuid
import IRCBuffer, Utils
from . import IRCBuffer, Utils
class User(object):
def __init__(self, nickname, id, server, bot):

View file

@ -1,4 +1,4 @@
import logging, logging.handlers, sys, time
import logging, logging.handlers, os, sys, time
class BitBotFormatter(logging.Formatter):
def formatTime(self, record, datefmt=None):
@ -14,7 +14,7 @@ class BitBotFormatter(logging.Formatter):
return s
class Log(object):
def __init__(self, bot):
def __init__(self, bot, directory, filename):
self.logger = logging.getLogger(__name__)
self.logger.setLevel(logging.DEBUG)
@ -29,7 +29,7 @@ class Log(object):
self.logger.addHandler(stdout_handler)
file_handler = logging.handlers.TimedRotatingFileHandler(
"bot.log", when="midnight", backupCount=5)
os.path.join(directory, filename), when="midnight", backupCount=5)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
self.logger.addHandler(file_handler)

View file

@ -24,7 +24,7 @@ class BaseModule(object):
pass
class ModuleManager(object):
def __init__(self, bot, events, exports, directory="modules"):
def __init__(self, bot, events, exports, directory):
self.bot = bot
self.events = events
self.exports = exports
@ -109,7 +109,7 @@ class ModuleManager(object):
raise
except Exception as e:
self.bot.log.error("Failed to load module \"%s\": %s",
[name, e.msg])
[name, str(e)])
raise
self.modules[module._import_name] = module

View file

@ -1,7 +1,7 @@
import json, re, traceback, urllib.request, urllib.parse, urllib.error, ssl
import string
import bs4
import ModuleManager
from . import ModuleManager
USER_AGENT = ("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36")

View file

@ -1,7 +1,8 @@
#!/usr/bin/env python3
import argparse, sys, time
import IRCBot, Config, Database
import argparse, os, sys, time
from src import Config, Database, EventManager, Exports, IRCBot
from src import IRCLineHandler, Logging, ModuleManager
def bool_input(s):
result = input("%s (Y/n): " % s)
@ -17,20 +18,29 @@ arg_parser.add_argument("--verbose", "-v", action="store_true")
args = arg_parser.parse_args()
bot = IRCBot.Bot()
database = Database.Database(bot, args.database)
config = Config.Config(bot, args.config)
directory = os.path.dirname(os.path.realpath(__file__))
bot.database = database
bot.config = config.load_config()
bot = IRCBot.Bot()
bot._events = events = EventManager.EventHook(bot)
bot._exports = exports = Exports.Exports()
bot.modules = modules = ModuleManager.ModuleManager(bot, events, exports,
os.path.join(directory, "modules"))
bot.line_handler = IRCLineHandler.LineHandler(bot, bot._events)
bot.log = Logging.Log(bot, directory, "bot.log")
bot.database = Database.Database(bot, directory, args.database)
bot.config = Config.Config(bot, directory, args.config).load_config()
bot.args = args
bot._events.on("timer.reconnect").hook(bot.reconnect)
bot._events.on("boot.done").hook(bot.setup_timers)
whitelist = bot.get_setting("module-whitelist", [])
blacklist = bot.get_setting("module-blacklist", [])
bot.modules.load_modules(whitelist=whitelist, blacklist=blacklist)
servers = []
for server_id, alias in database.servers.get_all():
for server_id, alias in bot.database.servers.get_all():
server = bot.add_server(server_id, connect=False)
if not server == None:
servers.append(server)
@ -54,7 +64,7 @@ else:
nickname = input("nickname: ")
username = input("username: ")
realname = input("realname: ")
database.servers.add(alias, hostname, port, password, ipv4,
bot.database.servers.add(alias, hostname, port, password, ipv4,
tls, nickname, username, realname)
except KeyboardInterrupt:
print()