tuxbot-bot/tuxbot/cogs/Admin/admin.py

81 lines
2.4 KiB
Python
Raw Normal View History

import logging
import discord
from discord.ext import commands
from tuxbot.core.utils import checks
from tuxbot.core.bot import Tux
from tuxbot.core.config import set_for_key
2020-10-19 15:04:10 +02:00
from tuxbot.core.config import Config
from tuxbot.core.i18n import (
Translator,
find_locale,
get_locale_name,
list_locales,
)
2020-09-02 00:08:06 +02:00
from tuxbot.core.utils.functions.extra import (
group_extra,
command_extra,
ContextPlus,
2020-09-02 00:08:06 +02:00
)
2020-11-09 01:18:55 +01:00
log = logging.getLogger("tuxbot.cogs.Admin")
_ = Translator("Admin", __file__)
2021-04-20 17:12:38 +02:00
class Admin(commands.Cog):
def __init__(self, bot: Tux):
self.bot = bot
async def _save_lang(self, ctx: ContextPlus, lang: str):
set_for_key(
2020-10-19 15:04:10 +02:00
self.bot.config.Servers, ctx.guild.id, Config.Server, locale=lang
)
# =========================================================================
# =========================================================================
@group_extra(name="lang", aliases=["locale", "langue"], deletable=True)
@commands.guild_only()
@checks.is_admin()
async def _lang(self, ctx: ContextPlus):
"""Manage lang settings."""
@_lang.command(name="set", aliases=["define", "choice"])
async def _lang_set(self, ctx: ContextPlus, lang: str):
try:
await self._save_lang(ctx, find_locale(lang.lower()))
await ctx.send(
_(
"Locale changed to {lang} successfully",
ctx,
self.bot.config,
).format(lang=f"`{get_locale_name(lang).lower()}`")
)
except NotImplementedError:
await self._lang_list(ctx)
@_lang.command(name="list", aliases=["liste", "all", "view"])
async def _lang_list(self, ctx: ContextPlus):
e = discord.Embed(
title=_("List of available locales: ", ctx, self.bot.config),
description=list_locales,
color=0x36393E,
)
await ctx.send(embed=e)
2020-09-02 00:08:06 +02:00
# =========================================================================
@command_extra(name="quit", aliases=["shutdown"], deletable=False)
@checks.is_owner()
async def _quit(self, ctx: ContextPlus):
await ctx.send("*quit...*")
await self.bot.shutdown()
@command_extra(name="restart", deletable=False)
@checks.is_owner()
async def _restart(self, ctx: ContextPlus):
await ctx.send("*restart...*")
await self.bot.shutdown(restart=True)