jarvis-bot/jarvis/cogs/settings.py

50 lines
1.4 KiB
Python

import discord
import jarvis
from discord import Role
from discord.ext import commands
from discord_slash import cog_ext
from discord_slash.utils.manage_commands import create_option
from jarvis.config import get_config
from jarvis.utils import db
from jarvis.utils.permissions import admin_or_permissions
class SettingsCog(commands.Cog):
def __init__(self, bot):
self.bot = bot
config = get_config()
self.db = db.DBManager(config.mongo).mongo
self.cache = {}
def update_settings(self, setting, value, guild):
settings = {"setting": setting, "value": value, "guild": guild}
updated = self.db.jarvis.settings.update_one(
{"settings": setting, "guild": guild},
{"$set": settings},
upsert=True,
)
return updated is not None
@cog_ext.cog_subcommand(
base="settings",
name="mute",
description="Set mute role",
options=[
create_option(
name="role",
description="Mute role",
option_type=8,
required=True,
)
],
)
@admin_or_permissions(mute_members=True)
async def _mute(self, ctx, role: Role):
await ctx.defer()
self.update_settings("mute", role.id, ctx.guild.id)
await ctx.send(f"Settings applied. New mute role is {role.name}")
def setup(bot):
bot.add_cog(SettingsCog(bot))