more updates
This commit is contained in:
parent
fc6f0624e6
commit
37efd695f5
4 changed files with 60 additions and 9 deletions
21
cogs/core.py
21
cogs/core.py
|
@ -8,11 +8,15 @@ from discord.ext import commands
|
|||
|
||||
from datetime import datetime
|
||||
import json
|
||||
import logging
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from bot import Nijika
|
||||
|
||||
log = logging.getLogger("nijika")
|
||||
|
||||
|
||||
class Core(commands.Cog):
|
||||
|
||||
def __init__(self, bot: Nijika):
|
||||
|
@ -38,6 +42,9 @@ class Core(commands.Cog):
|
|||
try:
|
||||
await self.bot.load_extension(cog)
|
||||
except Exception as e:
|
||||
log.exception(
|
||||
"Exception occurred trying to load %s",
|
||||
cog, exc_info=e)
|
||||
return await i.response.send_message(embed=discord.Embed(
|
||||
title="Cog has failed to load. See console for details",
|
||||
description=f"{e.__class__.__name__}: {e}",
|
||||
|
@ -49,8 +56,17 @@ class Core(commands.Cog):
|
|||
@app_commands.describe(cog="Cog to unload")
|
||||
async def _cogUnload(self, i: discord.Interaction, cog: str):
|
||||
try:
|
||||
if cog == "cogs.core":
|
||||
return await i.response.send_message(embed=discord.Embed(
|
||||
title="Error",
|
||||
description="Are you fucking stupid?",
|
||||
color=self.bot.error_color
|
||||
))
|
||||
await self.bot.remove_extension(cog)
|
||||
except Exception as e:
|
||||
log.exception(
|
||||
"Exception occurred trying to unload %s",
|
||||
cog, exc_info=e)
|
||||
return await i.response.send_message(embed=discord.Embed(
|
||||
title="Cog has failed to unload. See console for details",
|
||||
description=f"{e.__class__.__name__}: {e}",
|
||||
|
@ -60,10 +76,13 @@ class Core(commands.Cog):
|
|||
|
||||
@cogGroup.command(name='reload', description="Reload a cog (owner only)")
|
||||
@app_commands.describe(cog="Cog to reload")
|
||||
async def _cogUnload(self, i: discord.Interaction, cog: str):
|
||||
async def _cogReload(self, i: discord.Interaction, cog: str):
|
||||
try:
|
||||
await self.bot.reload_extension(cog)
|
||||
except Exception as e:
|
||||
log.exception(
|
||||
"Exception occurred trying to reload %s",
|
||||
cog, exc_info=e)
|
||||
return await i.response.send_message(embed=discord.Embed(
|
||||
title="Cog has failed to reload. See console for details",
|
||||
description=f"{e.__class__.__name__}: {e}",
|
||||
|
|
36
cogs/repo.py
36
cogs/repo.py
|
@ -1,6 +1,9 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from pyforgejo.api.repository import repo_get
|
||||
from pyforgejo.api.repository import (
|
||||
repo_get,
|
||||
repo_list_topics
|
||||
)
|
||||
|
||||
import discord
|
||||
from discord import app_commands
|
||||
|
@ -8,14 +11,16 @@ from discord.ext import commands
|
|||
|
||||
import utils
|
||||
|
||||
from datetime import datetime
|
||||
import json
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from bot import Nijika
|
||||
|
||||
|
||||
class Repo(commands.Cog):
|
||||
|
||||
|
||||
def __init__(self, bot: Nijika):
|
||||
self.bot: Nijika = bot
|
||||
|
||||
|
@ -26,7 +31,7 @@ class Repo(commands.Cog):
|
|||
|
||||
@grp.command(name="get", description="Get a repository")
|
||||
@app_commands.describe(
|
||||
target=("Target repository in <user>/<repo> format. "
|
||||
target=("Target repository. "
|
||||
"Example: kita/codeijika"))
|
||||
async def repoGet(self, i: discord.Interaction, target: str):
|
||||
|
||||
|
@ -47,11 +52,19 @@ class Repo(commands.Cog):
|
|||
return await i.response.send_message(embed=discord.Embed(
|
||||
title="Error",
|
||||
description=("Could not find repository. "
|
||||
"Please make sure the repository exists and is not "
|
||||
"private.")
|
||||
"Please make sure the repository exists and is "
|
||||
"not private."),
|
||||
color=self.bot.error_color
|
||||
))
|
||||
|
||||
topicRes = await repo_list_topics.asyncio_detailed(
|
||||
targetFmt[0],
|
||||
targetFmt[1],
|
||||
client=self.bot.forgejoClient
|
||||
)
|
||||
|
||||
data = json.loads(res.content)
|
||||
topicData = json.loads(topicRes.content)
|
||||
|
||||
if data["empty"]:
|
||||
return await i.response.send_message(
|
||||
|
@ -66,6 +79,13 @@ class Repo(commands.Cog):
|
|||
if data["avatar_url"] != "":
|
||||
embed.set_thumbnail(url=data["avatar_url"])
|
||||
|
||||
embed.set_footer(text=(
|
||||
"Created: {created} • "
|
||||
"Last updated: {last}").format(
|
||||
created=datetime.fromisoformat(data["created_at"]),
|
||||
last=datetime.fromisoformat(data["updated_at"])
|
||||
))
|
||||
|
||||
embed.set_author(
|
||||
name=data["owner"]["username"],
|
||||
url=utils.build_instance_url(
|
||||
|
@ -94,7 +114,13 @@ class Repo(commands.Cog):
|
|||
embed.add_field(
|
||||
name="PRs", value=data["open_pr_counter"])
|
||||
|
||||
if len(topicData["topics"]) > 0:
|
||||
embed.add_field(
|
||||
name="Topics", value=", ".join(topicData["topics"]),
|
||||
inline=False)
|
||||
|
||||
return await i.response.send_message(embed=embed)
|
||||
|
||||
|
||||
async def setup(bot: Nijika):
|
||||
await bot.add_cog(Repo(bot))
|
||||
|
|
|
@ -92,7 +92,13 @@ class User(commands.Cog):
|
|||
else data["username"]
|
||||
),
|
||||
color=self.bot.accent_color
|
||||
).set_image(url=data["avatar_url"]))
|
||||
)
|
||||
.set_image(url=data["avatar_url"])
|
||||
.set_author(
|
||||
name=data["username"],
|
||||
url=build_instance_url(data["username"]),
|
||||
icon_url=data["avatar_url"]
|
||||
))
|
||||
|
||||
async def setup(bot: Nijika):
|
||||
await bot.add_cog(User(bot))
|
||||
|
|
4
run.py
4
run.py
|
@ -8,14 +8,14 @@ import asyncio
|
|||
@contextlib.contextmanager
|
||||
def setup_logging():
|
||||
log = logging.getLogger()
|
||||
discord.utils.setup_logging()
|
||||
dateFmt = "%m-%d-%Y %H:%M:%S"
|
||||
discord.utils.setup_logging(formatter=logging.Formatter("[ {asctime} {levelname:.1}/{name:<25} ]: {message}", dateFmt, style="{"))
|
||||
|
||||
try:
|
||||
logging.getLogger("discord").setLevel(logging.INFO)
|
||||
logging.getLogger("discord.http").setLevel(logging.WARNING)
|
||||
|
||||
handler = RotatingFileHandler(filename='codeijika.log', encoding='utf-8', mode='w', maxBytes=32*1024*1024, backupCount=5)
|
||||
dateFmt = "%m-%d-%Y %H:%M:%S"
|
||||
fmt = logging.Formatter('[{asctime}] [{levelname:<7}] {name}: {message}', dateFmt, style='{')
|
||||
handler.setFormatter(fmt)
|
||||
log.addHandler(handler)
|
||||
|
|
Loading…
Reference in a new issue