Merge branch 'serverinfo' into 'main'
Bug fixes, add /serverinfo, closes #73 Closes #73 See merge request stark-industries/j.a.r.v.i.s.!24
This commit is contained in:
commit
e6055e58b8
6 changed files with 64 additions and 34 deletions
|
@ -4,13 +4,13 @@ from pathlib import Path
|
||||||
from discord import Intents
|
from discord import Intents
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
from discord.utils import find
|
from discord.utils import find
|
||||||
from discord_slash import SlashCommand
|
|
||||||
from psutil import Process
|
|
||||||
|
|
||||||
from jarvis import logo, tasks, utils
|
from jarvis import logo, tasks, utils
|
||||||
from jarvis.config import get_config
|
from jarvis.config import get_config
|
||||||
from jarvis.db import DBManager
|
from jarvis.db import DBManager
|
||||||
from jarvis.events import guild, member, message
|
from jarvis.events import guild, member, message
|
||||||
|
from psutil import Process
|
||||||
|
|
||||||
|
from discord_slash import SlashCommand
|
||||||
|
|
||||||
if asyncio.get_event_loop().is_closed():
|
if asyncio.get_event_loop().is_closed():
|
||||||
asyncio.set_event_loop(asyncio.new_event_loop())
|
asyncio.set_event_loop(asyncio.new_event_loop())
|
||||||
|
@ -25,7 +25,7 @@ jarvis = commands.Bot(
|
||||||
)
|
)
|
||||||
slash = SlashCommand(jarvis, sync_commands=True, sync_on_cog_reload=True)
|
slash = SlashCommand(jarvis, sync_commands=True, sync_on_cog_reload=True)
|
||||||
jarvis_self = Process()
|
jarvis_self = Process()
|
||||||
__version__ = "1.8.0"
|
__version__ = "1.8.1"
|
||||||
|
|
||||||
|
|
||||||
db = DBManager(get_config().mongo).mongo
|
db = DBManager(get_config().mongo).mongo
|
||||||
|
|
|
@ -20,17 +20,9 @@ class ModlogCommandCog(commands.Cog):
|
||||||
fields = [
|
fields = [
|
||||||
Field("Command", ctx.name),
|
Field("Command", ctx.name),
|
||||||
]
|
]
|
||||||
if ctx.args:
|
|
||||||
fields.append(
|
|
||||||
Field(
|
|
||||||
"Args",
|
|
||||||
" ".join(ctx.args),
|
|
||||||
False,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if ctx.kwargs:
|
if ctx.kwargs:
|
||||||
kwargs_string = " ".join(
|
kwargs_string = " ".join(
|
||||||
f"{k}: {ctx.kwargs[k]}" for k in ctx.kwargs
|
f"{k}: {str(ctx.kwargs[k])}" for k in ctx.kwargs
|
||||||
)
|
)
|
||||||
fields.append(
|
fields.append(
|
||||||
Field(
|
Field(
|
||||||
|
|
|
@ -2,7 +2,6 @@ from datetime import datetime, timedelta
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
from discord.utils import find
|
from discord.utils import find
|
||||||
|
|
||||||
from jarvis.utils import build_embed
|
from jarvis.utils import build_embed
|
||||||
from jarvis.utils.field import Field
|
from jarvis.utils.field import Field
|
||||||
|
|
||||||
|
@ -41,7 +40,7 @@ def modlog_embed(
|
||||||
return embed
|
return embed
|
||||||
|
|
||||||
|
|
||||||
def get_latest_log(self, auditlog, target):
|
def get_latest_log(auditlog, target):
|
||||||
before = datetime.utcnow() - timedelta(seconds=10)
|
before = datetime.utcnow() - timedelta(seconds=10)
|
||||||
return find(
|
return find(
|
||||||
lambda x: x.target.id == target.id and x.created_at > before,
|
lambda x: x.target.id == target.id and x.created_at > before,
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
from discord import TextChannel
|
from discord import TextChannel
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
from discord_slash import SlashContext, cog_ext
|
|
||||||
from discord_slash.utils.manage_commands import create_option
|
|
||||||
|
|
||||||
from jarvis.db.types import Star, Starboard
|
from jarvis.db.types import Star, Starboard
|
||||||
from jarvis.utils import build_embed
|
from jarvis.utils import build_embed
|
||||||
from jarvis.utils.permissions import admin_or_permissions
|
from jarvis.utils.permissions import admin_or_permissions
|
||||||
|
|
||||||
|
from discord_slash import SlashContext, cog_ext
|
||||||
|
from discord_slash.utils.manage_commands import create_option
|
||||||
|
|
||||||
supported_images = [
|
supported_images = [
|
||||||
"image/png",
|
"image/png",
|
||||||
"image/gif",
|
"image/gif",
|
||||||
|
@ -221,11 +221,6 @@ class StarboardCog(commands.Cog):
|
||||||
base="star",
|
base="star",
|
||||||
name="delete",
|
name="delete",
|
||||||
description="Delete a starred message",
|
description="Delete a starred message",
|
||||||
guild_ids=[
|
|
||||||
862402786116763668,
|
|
||||||
418094694325813248,
|
|
||||||
578757004059738142,
|
|
||||||
],
|
|
||||||
options=[
|
options=[
|
||||||
create_option(
|
create_option(
|
||||||
name="id",
|
name="id",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import re
|
import re
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
from discord import File, Role, User
|
from discord import File, Guild, Role, User
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
from discord_slash import SlashContext, cog_ext
|
from discord_slash import SlashContext, cog_ext
|
||||||
from discord_slash.utils.manage_commands import create_option
|
from discord_slash.utils.manage_commands import create_option
|
||||||
|
@ -225,6 +225,48 @@ class UtilCog(commands.Cog):
|
||||||
|
|
||||||
await ctx.send(embed=embed)
|
await ctx.send(embed=embed)
|
||||||
|
|
||||||
|
@cog_ext.cog_slash(name="serverinfo", description="Get server info")
|
||||||
|
async def _server_info(self, ctx: SlashContext):
|
||||||
|
guild: Guild = ctx.guild
|
||||||
|
|
||||||
|
owner = (
|
||||||
|
f"{guild.owner.name}#{guild.owner.discriminator}"
|
||||||
|
if guild.owner
|
||||||
|
else "||`[redacted]`||"
|
||||||
|
)
|
||||||
|
|
||||||
|
region = guild.region
|
||||||
|
categories = len(guild.categories)
|
||||||
|
text_channels = len(guild.text_channels)
|
||||||
|
voice_channels = len(guild.voice_channels)
|
||||||
|
members = guild.member_count
|
||||||
|
roles = len(guild.roles)
|
||||||
|
role_list = ", ".join(role.name for role in guild.roles)
|
||||||
|
|
||||||
|
fields = [
|
||||||
|
Field(name="Owner", value=owner),
|
||||||
|
Field(name="Region", value=region),
|
||||||
|
Field(name="Channel Categories", value=categories),
|
||||||
|
Field(name="Text Channels", value=text_channels),
|
||||||
|
Field(name="Voice Channels", value=voice_channels),
|
||||||
|
Field(name="Members", value=members),
|
||||||
|
Field(name="Roles", value=roles),
|
||||||
|
]
|
||||||
|
if len(role_list) < 1024:
|
||||||
|
fields.append(
|
||||||
|
Field(name="Role List", value=role_list, inline=False)
|
||||||
|
)
|
||||||
|
|
||||||
|
embed = build_embed(
|
||||||
|
title="", description="", fields=fields, timestamp=guild.created_at
|
||||||
|
)
|
||||||
|
|
||||||
|
embed.set_author(name=guild.name, icon_url=guild.icon_url)
|
||||||
|
embed.set_thumbnail(url=guild.icon_url)
|
||||||
|
embed.set_footer(text=f"ID: {guild.id} | Server Created")
|
||||||
|
|
||||||
|
await ctx.send(embed=embed)
|
||||||
|
|
||||||
|
|
||||||
def setup(bot):
|
def setup(bot):
|
||||||
bot.add_cog(UtilCog(bot))
|
bot.add_cog(UtilCog(bot))
|
||||||
|
|
|
@ -4,10 +4,9 @@ from datetime import datetime
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
|
||||||
from bson import ObjectId
|
from bson import ObjectId
|
||||||
from pymongo import ASCENDING, DESCENDING
|
|
||||||
|
|
||||||
from jarvis.config import get_config
|
from jarvis.config import get_config
|
||||||
from jarvis.db import DBManager
|
from jarvis.db import DBManager
|
||||||
|
from pymongo import ASCENDING, DESCENDING
|
||||||
|
|
||||||
logger = logging.getLogger("mongodb")
|
logger = logging.getLogger("mongodb")
|
||||||
|
|
||||||
|
@ -128,6 +127,7 @@ class MongoObject:
|
||||||
:return: If update was successful
|
:return: If update was successful
|
||||||
"""
|
"""
|
||||||
to_update = self.to_dict()
|
to_update = self.to_dict()
|
||||||
|
if self._id:
|
||||||
search = {"_id": to_update["_id"]}
|
search = {"_id": to_update["_id"]}
|
||||||
try:
|
try:
|
||||||
result = self.coll.update_one(
|
result = self.coll.update_one(
|
||||||
|
@ -137,6 +137,8 @@ class MongoObject:
|
||||||
logger.error(f"Failed to update {type(self).__name__}", e)
|
logger.error(f"Failed to update {type(self).__name__}", e)
|
||||||
else:
|
else:
|
||||||
return result.modified_count > 0
|
return result.modified_count > 0
|
||||||
|
else:
|
||||||
|
self.insert()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get(cls, **kwargs) -> Optional[object]:
|
def get(cls, **kwargs) -> Optional[object]:
|
||||||
|
|
Loading…
Add table
Reference in a new issue