Move Geeksbot class to it's own file
Add inspect to auto_load list Change default prefix to be casefolded
This commit is contained in:
parent
ae178797bc
commit
a615d62afd
@ -3,6 +3,9 @@ import time
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
from geeksbot.imports.geeksbot import Geeksbot
|
||||||
|
from geeksbot.imports.checks import is_me
|
||||||
|
|
||||||
log_format = '{asctime}.{msecs:03.0f}|{levelname:<8}|{name}::{message}'
|
log_format = '{asctime}.{msecs:03.0f}|{levelname:<8}|{name}::{message}'
|
||||||
date_format = '%Y.%m.%d %H.%M.%S'
|
date_format = '%Y.%m.%d %H.%M.%S'
|
||||||
|
|
||||||
@ -26,107 +29,6 @@ logger.info('Logging Setup Complete')
|
|||||||
|
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
logger.info('Starting Imports')
|
|
||||||
|
|
||||||
start = datetime.utcnow()
|
|
||||||
# noinspection PyPackageRequirements
|
|
||||||
import discord # noqa: E402
|
|
||||||
logger.info('Discord.py Imported')
|
|
||||||
# noinspection PyPackageRequirements
|
|
||||||
from discord.ext import commands # noqa: E402
|
|
||||||
logger.info('commands Imported')
|
|
||||||
# noinspection PyPackageRequirements
|
|
||||||
from discord.ext.commands.view import StringView # noqa: E402
|
|
||||||
logger.info('StringView Imported')
|
|
||||||
# noinspection PyPackageRequirements
|
|
||||||
from discord.ext.commands.context import Context # noqa: E402
|
|
||||||
logger.info('Context Imported')
|
|
||||||
logger.info(f'Discord.py Import Complete - Took {(datetime.utcnow() - start).total_seconds()} seconds')
|
|
||||||
# noinspection PyRedeclaration
|
|
||||||
start = datetime.utcnow()
|
|
||||||
from concurrent import futures # noqa: E402
|
|
||||||
logger.info('Concurrent futures Imported')
|
|
||||||
from multiprocessing import Pool # noqa: E402
|
|
||||||
logger.info('Multiprocesing Pool Imported')
|
|
||||||
logger.info(f'Process Libs Import Complete - Took {(datetime.utcnow() - start).total_seconds()} seconds')
|
|
||||||
# noinspection PyRedeclaration
|
|
||||||
start = datetime.utcnow()
|
|
||||||
import re # noqa: E402
|
|
||||||
logger.info('re Imported')
|
|
||||||
import json # noqa: E402
|
|
||||||
logger.info('JSON Imported')
|
|
||||||
import aiohttp # noqa: E402
|
|
||||||
logger.info('aiohttp Imported')
|
|
||||||
import redis # noqa: E402
|
|
||||||
logger.info('redis Imported')
|
|
||||||
logger.info(f'Misc Libs Import Complete - Took {(datetime.utcnow() - start).total_seconds()} seconds')
|
|
||||||
# noinspection PyRedeclaration
|
|
||||||
# start = datetime.utcnow()
|
|
||||||
# from geeksbot.imports.rcon_lib import arcon
|
|
||||||
# from geeksbot.imports import message_logging
|
|
||||||
# logger.info(f'Geeksbot Libs Import Complete - Took {(datetime.utcnow() - start).total_seconds()} seconds')
|
|
||||||
|
|
||||||
from geeksbot.imports.checks import is_me
|
|
||||||
|
|
||||||
|
|
||||||
logger.info('Imports Complete')
|
|
||||||
|
|
||||||
|
|
||||||
class Geeksbot(commands.Bot):
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
self.default_prefix = os.environ.get('DISCORD_DEFAULT_PREFIX', 'g$')
|
|
||||||
kwargs['command_prefix'] = self.default_prefix
|
|
||||||
self.description = "Geeksbot v2"
|
|
||||||
kwargs['description'] = self.description
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
self.config_dir = 'geeksbot/config/'
|
|
||||||
self.config_file = 'bot_config.json'
|
|
||||||
self.extension_dir = 'exts'
|
|
||||||
self.cache = redis.Redis(host=os.environ['REDIS_HOST'], port=os.environ['REDIS_PORT'], db=1, charset="utf-8", decode_responses=True)
|
|
||||||
self.api_token = os.environ['API_TOKEN']
|
|
||||||
self.aio_session = aiohttp.ClientSession(loop=self.loop)
|
|
||||||
self.auth_header = {'Authorization': f'Token {self.api_token}'}
|
|
||||||
self.api_base = 'https://geeksbot.app/api'
|
|
||||||
with open(f'{self.config_dir}{self.config_file}') as f:
|
|
||||||
self.bot_config = json.load(f)
|
|
||||||
self.embed_color = discord.Colour.from_rgb(49, 107, 111)
|
|
||||||
self.error_color = discord.Colour.from_rgb(142, 29, 31)
|
|
||||||
self.tpe = futures.ThreadPoolExecutor(max_workers=20)
|
|
||||||
self.process_pool = Pool(processes=4)
|
|
||||||
self.geo_api = '2d4e419c2be04c8abe91cb5dd1548c72'
|
|
||||||
self.git_url = 'https://github.com/dustinpianalto/geeksbot_v2'
|
|
||||||
self.load_default_extensions()
|
|
||||||
self.owner_id = 351794468870946827
|
|
||||||
|
|
||||||
self.book_emojis = {
|
|
||||||
'unlock': '🔓',
|
|
||||||
'start': '⏮',
|
|
||||||
'back': '◀',
|
|
||||||
'hash': '#\N{COMBINING ENCLOSING KEYCAP}',
|
|
||||||
'forward': '▶',
|
|
||||||
'end': '⏭',
|
|
||||||
'close': '🇽',
|
|
||||||
}
|
|
||||||
|
|
||||||
async def load_ext(self, mod):
|
|
||||||
logger.info(f"Starting to load {mod}")
|
|
||||||
self.load_extension(f'geeksbot.{self.extension_dir}.{mod}')
|
|
||||||
logger.info(f'Extension Loaded: {mod}')
|
|
||||||
|
|
||||||
async def unload_ext(self, mod):
|
|
||||||
logger.info(f"Starting to unload {mod}")
|
|
||||||
self.unload_extension(f'geeksbot.{self.extension_dir}.{mod}')
|
|
||||||
logger.info(f'Extension Unloaded: {mod}')
|
|
||||||
|
|
||||||
def load_default_extensions(self):
|
|
||||||
for load_item in self.bot_config['load_list']:
|
|
||||||
self.loop.create_task(self.load_ext(load_item))
|
|
||||||
|
|
||||||
async def close(self):
|
|
||||||
await super().close()
|
|
||||||
await self.aio_session.close()
|
|
||||||
|
|
||||||
|
|
||||||
bot = Geeksbot(case_insensitive=True)
|
bot = Geeksbot(case_insensitive=True)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
"exec",
|
"exec",
|
||||||
"message_events",
|
"message_events",
|
||||||
"user_events",
|
"user_events",
|
||||||
"tickets"
|
"tickets",
|
||||||
|
"inspect"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
79
geeksbot/imports/geeksbot.py
Normal file
79
geeksbot/imports/geeksbot.py
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
import os
|
||||||
|
import json
|
||||||
|
from concurrent import futures
|
||||||
|
from multiprocessing import Pool
|
||||||
|
import logging
|
||||||
|
|
||||||
|
import discord
|
||||||
|
from discord.ext import commands
|
||||||
|
import redis
|
||||||
|
import aiohttp
|
||||||
|
|
||||||
|
geeksbot_logger = logging.getLogger('Geeksbot')
|
||||||
|
|
||||||
|
|
||||||
|
class Geeksbot(commands.Bot):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
self.default_prefix = os.environ.get('DISCORD_DEFAULT_PREFIX', 'g$')
|
||||||
|
kwargs['command_prefix'] = self.get_prefixes
|
||||||
|
self.description = "Geeksbot v2"
|
||||||
|
kwargs['description'] = self.description
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.config_dir = 'geeksbot/config/'
|
||||||
|
self.config_file = 'bot_config.json'
|
||||||
|
self.extension_dir = 'exts'
|
||||||
|
self.cache = redis.Redis(host=os.environ['REDIS_HOST'], port=os.environ['REDIS_PORT'], db=1, charset="utf-8", decode_responses=True)
|
||||||
|
self.api_token = os.environ['API_TOKEN']
|
||||||
|
self.aio_session = aiohttp.ClientSession(loop=self.loop)
|
||||||
|
self.auth_header = {'Authorization': f'Token {self.api_token}'}
|
||||||
|
self.api_base = 'https://geeksbot.app/api'
|
||||||
|
with open(f'{self.config_dir}{self.config_file}') as f:
|
||||||
|
self.bot_config = json.load(f)
|
||||||
|
self.embed_color = discord.Colour.from_rgb(49, 107, 111)
|
||||||
|
self.error_color = discord.Colour.from_rgb(142, 29, 31)
|
||||||
|
self.tpe = futures.ThreadPoolExecutor(max_workers=20)
|
||||||
|
self.process_pool = Pool(processes=4)
|
||||||
|
self.geo_api = '2d4e419c2be04c8abe91cb5dd1548c72'
|
||||||
|
self.git_url = 'https://github.com/dustinpianalto/geeksbot_v2'
|
||||||
|
self.load_default_extensions()
|
||||||
|
self.owner_id = 351794468870946827
|
||||||
|
|
||||||
|
self.book_emojis = {
|
||||||
|
'unlock': '🔓',
|
||||||
|
'start': '⏮',
|
||||||
|
'back': '◀',
|
||||||
|
'hash': '#\N{COMBINING ENCLOSING KEYCAP}',
|
||||||
|
'forward': '▶',
|
||||||
|
'end': '⏭',
|
||||||
|
'close': '🇽',
|
||||||
|
}
|
||||||
|
|
||||||
|
async def load_ext(self, mod):
|
||||||
|
try:
|
||||||
|
self.load_extension(f'geeksbot.{self.extension_dir}.{mod}')
|
||||||
|
geeksbot_logger.info(f'Extension Loaded: {mod}')
|
||||||
|
except Exception:
|
||||||
|
geeksbot_logger.exception(f"Error loading {mod}")
|
||||||
|
|
||||||
|
async def unload_ext(self, mod):
|
||||||
|
try:
|
||||||
|
self.unload_extension(f'geeksbot.{self.extension_dir}.{mod}')
|
||||||
|
geeksbot_logger.info(f'Extension Unloaded: {mod}')
|
||||||
|
except Exception:
|
||||||
|
geeksbot_logger.exception(f"Error loading {mod}")
|
||||||
|
|
||||||
|
def load_default_extensions(self):
|
||||||
|
for load_item in self.bot_config['load_list']:
|
||||||
|
self.loop.create_task(self.load_ext(load_item))
|
||||||
|
|
||||||
|
async def get_prefixes(self, message):
|
||||||
|
return self.default_prefix.casefold()
|
||||||
|
|
||||||
|
async def close(self):
|
||||||
|
try:
|
||||||
|
await super().close()
|
||||||
|
await self.aio_session.close()
|
||||||
|
except Exception:
|
||||||
|
geeksbot_logger.exception(f"Error Closing Connections.")
|
||||||
|
geeksbot_logger.info('Exiting...')
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user