50 lines
1.4 KiB
Python
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))
|