more updates

This commit is contained in:
kita 2024-04-26 10:53:06 +05:00
parent fc6f0624e6
commit 37efd695f5
Signed by: kita
GPG key ID: 1E3B374E5F392590
4 changed files with 60 additions and 9 deletions

View file

@ -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}",

View file

@ -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))

View file

@ -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
View file

@ -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)