|
1
|
|
|
"""Cog responsible for region management""" |
|
2
|
|
|
import cyberjake |
|
3
|
|
|
import discord |
|
4
|
|
|
from discord.ext import commands |
|
5
|
|
|
from bot import utils |
|
6
|
|
|
|
|
7
|
|
|
|
|
8
|
|
|
class RegionCog(commands.Cog, name="Regions"): |
|
9
|
|
|
"""Region Cog |
|
10
|
|
|
|
|
11
|
|
|
Cog that holds the region commands |
|
12
|
|
|
|
|
13
|
|
|
**Commands:** |
|
14
|
|
|
- `add-region`: Command that adds a region and its role to the regions' database. |
|
15
|
|
|
|
|
16
|
|
|
- `list-regions`: Commands that list all the regions available to join. |
|
17
|
|
|
|
|
18
|
|
|
""" |
|
19
|
|
|
|
|
20
|
|
|
def __init__(self, bot): |
|
21
|
|
|
self.bot = bot |
|
22
|
|
|
|
|
23
|
|
|
async def cog_check(self, ctx: commands.Context) -> bool: |
|
24
|
|
|
"""Cog Check |
|
25
|
|
|
|
|
26
|
|
|
cog_check is set for the whole cog. Which makes all the commands in health admin only. |
|
27
|
|
|
|
|
28
|
|
|
:param ctx: Command context |
|
29
|
|
|
:type ctx: discord.ext.commands.Context |
|
30
|
|
|
:return: User is bot admin |
|
31
|
|
|
:rtype: bool |
|
32
|
|
|
""" |
|
33
|
|
|
return await utils.check_admin(ctx) |
|
34
|
|
|
|
|
35
|
|
|
@commands.command(name="add-region", help="Adds regions") |
|
36
|
|
|
async def add_region(self, ctx: commands.Context, *, region: str) -> None: |
|
37
|
|
|
"""Add region |
|
38
|
|
|
|
|
39
|
|
|
:param ctx: Command context |
|
40
|
|
|
:type ctx: discord.ext.commands.Context |
|
41
|
|
|
:param region: Name of region to add |
|
42
|
|
|
:type region: str |
|
43
|
|
|
:return: None |
|
44
|
|
|
""" |
|
45
|
|
|
is_role = discord.utils.get(ctx.guild.roles, name=region) |
|
46
|
|
|
if not is_role: |
|
47
|
|
|
added_region = await ctx.guild.create_role( |
|
48
|
|
|
name=region, |
|
49
|
|
|
mentionable=True, |
|
50
|
|
|
reason=f"Added by {ctx.author.name}", |
|
51
|
|
|
) |
|
52
|
|
|
status = await utils.insert("regions", [region, added_region.id]) |
|
53
|
|
|
else: |
|
54
|
|
|
status = "error" |
|
55
|
|
|
if status == "error": |
|
56
|
|
|
await cyberjake.error_embed(ctx, "Error creating the region.") |
|
57
|
|
|
else: |
|
58
|
|
|
await cyberjake.make_embed( |
|
59
|
|
|
ctx, color="28b463", title=f"Region '{region}' has been created." |
|
60
|
|
|
) |
|
61
|
|
|
|
|
62
|
|
|
@commands.command(name="list-regions", help="Lists available regions.") |
|
63
|
|
|
async def list_region(self, ctx: commands.Context) -> None: |
|
64
|
|
|
"""List regions |
|
65
|
|
|
|
|
66
|
|
|
Admin command that lists the regions. Only returns a list. |
|
67
|
|
|
|
|
68
|
|
|
:param ctx: Command context |
|
69
|
|
|
:type ctx: discord.ext.commands.Context |
|
70
|
|
|
:return: None |
|
71
|
|
|
""" |
|
72
|
|
|
regions = sorted(await utils.fetch("regions", "name")) |
|
73
|
|
|
formatted = "" |
|
74
|
|
|
for region in regions: |
|
75
|
|
|
formatted += f" - {region} \n" |
|
76
|
|
|
await cyberjake.make_embed(ctx, title="Available Regions:", description=formatted) |
|
77
|
|
|
|
|
78
|
|
|
|
|
79
|
|
|
async def setup(bot): |
|
80
|
|
|
"""Needed for extension loading""" |
|
81
|
|
|
await bot.add_cog(RegionCog(bot)) |
|
82
|
|
|
|