Compare commits
49 Commits
1ddf767074
...
946590a3a1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
946590a3a1 | ||
|
|
222760f6a0 | ||
|
|
6f7e3b4bbc | ||
|
|
ba27d7c390 | ||
|
|
0a9ab007e5 | ||
|
|
66d994023e | ||
|
|
08f1903871 | ||
|
|
63d852f37b | ||
|
|
776b8d009c | ||
|
|
b189f2ca5e | ||
|
|
fe143678fe | ||
|
|
8f70fcc142 | ||
|
|
6b8bda9223 | ||
|
|
0a4baee373 | ||
|
|
1bd8873803 | ||
|
|
3fa91bbcce | ||
|
|
38b6ff65a4 | ||
|
|
057e1210b7 | ||
|
|
76b5d1df8f | ||
|
|
f2fd478dc8 | ||
|
|
b7f90c990e | ||
|
|
edfebad791 | ||
|
|
d5194bba3d | ||
|
|
2a9c202436 | ||
|
|
7f14b015ce | ||
|
|
2eb5ac124c | ||
|
|
788da95c11 | ||
|
|
40a182cc43 | ||
|
|
113737f2fd | ||
|
|
9267acf8fb | ||
|
|
871a5f73be | ||
|
|
327a5e74d2 | ||
|
|
02c3f1e685 | ||
|
|
7321413c90 | ||
|
|
c6efae9635 | ||
|
|
239261eeaf | ||
|
|
423edf1a3a | ||
|
|
6b1dd09a98 | ||
|
|
0f80146172 | ||
|
|
6ae7113f5d | ||
|
|
cd286222c1 | ||
|
|
db0391d8af | ||
|
|
7f2f4a32ca | ||
|
|
39838d3e79 | ||
|
|
a76394b568 | ||
|
|
3ebf0e22f8 | ||
|
|
becc2d3ade | ||
|
|
6b9a9cc968 | ||
|
|
09384a7efa |
@ -26,6 +26,8 @@ from .shared_libs.loggable import Loggable
|
|||||||
# Init logging to output on INFO level to stderr.
|
# Init logging to output on INFO level to stderr.
|
||||||
logging.basicConfig(level="INFO")
|
logging.basicConfig(level="INFO")
|
||||||
|
|
||||||
|
REBOOT_FILE = "sebimachine/config/reboot"
|
||||||
|
|
||||||
|
|
||||||
# If uvloop is installed, change to that eventloop policy as it
|
# If uvloop is installed, change to that eventloop policy as it
|
||||||
# is more efficient
|
# is more efficient
|
||||||
@ -75,13 +77,11 @@ class SebiMachine(commands.Bot, LoadConfig, Loggable):
|
|||||||
# Load plugins
|
# Load plugins
|
||||||
# Add your cog file name in this list
|
# Add your cog file name in this list
|
||||||
with open(in_here("extensions.txt")) as cog_file:
|
with open(in_here("extensions.txt")) as cog_file:
|
||||||
cogs = cog_file.readlines()
|
cogs = {f'sebimachine.cogs.{c.strip()}' for c in cog_file.readlines()}
|
||||||
|
|
||||||
for cog in cogs:
|
for cog in cogs:
|
||||||
# Could this just be replaced with `strip()`?
|
|
||||||
try:
|
try:
|
||||||
cog = cog.replace("\n", "")
|
self.load_extension(cog)
|
||||||
self.load_extension(f"src.cogs.{cog}")
|
|
||||||
self.logger.info(f"Loaded: {cog}")
|
self.logger.info(f"Loaded: {cog}")
|
||||||
except (ModuleNotFoundError, ImportError) as ex:
|
except (ModuleNotFoundError, ImportError) as ex:
|
||||||
logging.exception(f'Could not load {cog}', exc_info=(type(ex), ex, ex.__traceback__))
|
logging.exception(f'Could not load {cog}', exc_info=(type(ex), ex, ex.__traceback__))
|
||||||
@ -90,7 +90,8 @@ class SebiMachine(commands.Bot, LoadConfig, Loggable):
|
|||||||
async def on_ready(self):
|
async def on_ready(self):
|
||||||
"""On ready function"""
|
"""On ready function"""
|
||||||
self.maintenance and self.logger.warning("MAINTENANCE ACTIVE")
|
self.maintenance and self.logger.warning("MAINTENANCE ACTIVE")
|
||||||
with open(f"src/config/reboot", "r") as f:
|
if os.path.exists(REBOOT_FILE):
|
||||||
|
with open(REBOOT_FILE, "r") as f:
|
||||||
reboot = f.readlines()
|
reboot = f.readlines()
|
||||||
if int(reboot[0]) == 1:
|
if int(reboot[0]) == 1:
|
||||||
await self.get_channel(int(reboot[1])).send("Restart Finished.")
|
await self.get_channel(int(reboot[1])).send("Restart Finished.")
|
||||||
@ -100,7 +101,7 @@ class SebiMachine(commands.Bot, LoadConfig, Loggable):
|
|||||||
f'FAILED TO LOAD {cog} BECAUSE OF {type(ex).__name__}: {ex}\n'
|
f'FAILED TO LOAD {cog} BECAUSE OF {type(ex).__name__}: {ex}\n'
|
||||||
f'{tb}'
|
f'{tb}'
|
||||||
)
|
)
|
||||||
with open(f"src/config/reboot", "w") as f:
|
with open(REBOOT_FILE, "w") as f:
|
||||||
f.write(f"0")
|
f.write(f"0")
|
||||||
|
|
||||||
async def on_command_error(self, ctx, error):
|
async def on_command_error(self, ctx, error):
|
||||||
|
|||||||
@ -11,7 +11,7 @@ class BotManager:
|
|||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
# The member is a bot
|
# The member is a bot
|
||||||
bot_owner = member.guild.get_member((await self.bot.db_con.fetchval('select owner from bots where id = $1', member.id))
|
bot_owner = member.guild.get_member(await self.bot.db_con.fetchval('select owner from bots where id = $1', member.id))
|
||||||
await bot_owner.add_roles(discord.utils.get(member.guild.roles, name='Bot Developers'))
|
await bot_owner.add_roles(discord.utils.get(member.guild.roles, name='Bot Developers'))
|
||||||
|
|
||||||
await member.add_roles(discord.utils.get(member.guild.roles, name='Bots'))
|
await member.add_roles(discord.utils.get(member.guild.roles, name='Bots'))
|
||||||
@ -61,7 +61,7 @@ class BotManager:
|
|||||||
await ctx.send(embed=em)
|
await ctx.send(embed=em)
|
||||||
|
|
||||||
em = discord.Embed(title="Bot invite", colour=discord.Color(0x363941))
|
em = discord.Embed(title="Bot invite", colour=discord.Color(0x363941))
|
||||||
em.description = discord.utils.oauth_url(client_id, permissions=None, guild=ctx.guild))
|
em.description = discord.utils.oauth_url(client_id, permissions=None, guild=ctx.guild)
|
||||||
em.set_thumbnail(url=bot.avatar_url)
|
em.set_thumbnail(url=bot.avatar_url)
|
||||||
em.add_field(name="Bot name", value=bot.name)
|
em.add_field(name="Bot name", value=bot.name)
|
||||||
em.add_field(name="Bot id", value="`" + str(bot.id) + "`")
|
em.add_field(name="Bot id", value="`" + str(bot.id) + "`")
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import asyncio
|
|||||||
class Tag:
|
class Tag:
|
||||||
def __init__(self, bot):
|
def __init__(self, bot):
|
||||||
self.bot = bot
|
self.bot = bot
|
||||||
with open("src/shared_libs/tags.json", "r") as fp:
|
with open("sebimachine/shared_libs/tags.json", "r") as fp:
|
||||||
json_data = fp.read()
|
json_data = fp.read()
|
||||||
global tags
|
global tags
|
||||||
tags = json.loads(json_data)
|
tags = json.loads(json_data)
|
||||||
|
|||||||
@ -160,7 +160,7 @@ class Capturing(list):
|
|||||||
sys.stdout = self._stdout
|
sys.stdout = self._stdout
|
||||||
|
|
||||||
|
|
||||||
def to_list_of_str(items, out: list = list(), level=1, recurse=0):
|
def to_list_of_str(items, out: list=list(), level=1, recurse=0):
|
||||||
def rec_loop(item, key, out, level):
|
def rec_loop(item, key, out, level):
|
||||||
quote = '"'
|
quote = '"'
|
||||||
if type(item) == list:
|
if type(item) == list:
|
||||||
@ -174,42 +174,40 @@ def to_list_of_str(items, out: list = list(), level=1, recurse=0):
|
|||||||
out = to_list_of_str(item, out, new_level, 1)
|
out = to_list_of_str(item, out, new_level, 1)
|
||||||
out.append(f'{" "*level}}}')
|
out.append(f'{" "*level}}}')
|
||||||
else:
|
else:
|
||||||
out.append(
|
out.append(f'{" "*level}{quote+key+quote+": " if key else ""}{repr(item)},')
|
||||||
f'{" "*level}{quote+key+quote+": " if key else ""}{repr(item)},'
|
|
||||||
)
|
|
||||||
|
|
||||||
if type(items) == list:
|
if type(items) == list:
|
||||||
if not recurse:
|
if not recurse:
|
||||||
out = list()
|
out = list()
|
||||||
out.append("[")
|
out.append('[')
|
||||||
for item in items:
|
for item in items:
|
||||||
rec_loop(item, None, out, level)
|
rec_loop(item, None, out, level)
|
||||||
if not recurse:
|
if not recurse:
|
||||||
out.append("]")
|
out.append(']')
|
||||||
elif type(items) == dict:
|
elif type(items) == dict:
|
||||||
if not recurse:
|
if not recurse:
|
||||||
out = list()
|
out = list()
|
||||||
out.append("{")
|
out.append('{')
|
||||||
for key in items:
|
for key in items:
|
||||||
rec_loop(items[key], key, out, level)
|
rec_loop(items[key], key, out, level)
|
||||||
if not recurse:
|
if not recurse:
|
||||||
out.append("}")
|
out.append('}')
|
||||||
|
|
||||||
return out
|
return out
|
||||||
|
|
||||||
|
|
||||||
def paginate(text, maxlen=1990):
|
def paginate(text, maxlen=1990):
|
||||||
paginator = Paginator(prefix="```py", max_size=maxlen + 10)
|
paginator = Paginator(prefix='```py', max_size=maxlen+10)
|
||||||
if type(text) == list:
|
if type(text) == list:
|
||||||
data = to_list_of_str(text)
|
data = to_list_of_str(text)
|
||||||
elif type(text) == dict:
|
elif type(text) == dict:
|
||||||
data = to_list_of_str(text)
|
data = to_list_of_str(text)
|
||||||
else:
|
else:
|
||||||
data = str(text).split("\n")
|
data = str(text).split('\n')
|
||||||
for line in data:
|
for line in data:
|
||||||
if len(line) > maxlen:
|
if len(line) > maxlen:
|
||||||
n = maxlen
|
n = maxlen
|
||||||
for l in [line[i : i + n] for i in range(0, len(line), n)]:
|
for l in [line[i:i+n] for i in range(0, len(line), n)]:
|
||||||
paginator.add_line(l)
|
paginator.add_line(l)
|
||||||
else:
|
else:
|
||||||
paginator.add_line(line)
|
paginator.add_line(line)
|
||||||
@ -221,8 +219,7 @@ async def run_command(args):
|
|||||||
process = await asyncio.create_subprocess_shell(
|
process = await asyncio.create_subprocess_shell(
|
||||||
args,
|
args,
|
||||||
# stdout must a pipe to be accessible as process.stdout
|
# stdout must a pipe to be accessible as process.stdout
|
||||||
stdout=asyncio.subprocess.PIPE,
|
stdout=asyncio.subprocess.PIPE)
|
||||||
)
|
|
||||||
# Wait for the subprocess to finish
|
# Wait for the subprocess to finish
|
||||||
stdout, stderr = await process.communicate()
|
stdout, stderr = await process.communicate()
|
||||||
# Return stdout
|
# Return stdout
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user