build.cogs.channelupcog   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 11
eloc 50
dl 0
loc 67
rs 10
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A setup() 0 2 1

5 Methods

Rating   Name   Duplication   Size   Complexity  
A ChannelUpCog.update_commons_ch() 0 7 1
A ChannelUpCog.rename_nightmare_channel() 0 12 2
A ChannelUpCog.update_common_ch_name() 0 17 5
A ChannelUpCog.__init__() 0 2 1
A ChannelUpCog.update_member_count_command() 0 7 1
1
import discord
2
from discord.ext import commands
3
from discord_slash import cog_ext, SlashContext
4
5
import cogs.cogbase as cogbase
6
7
8
class ChannelUpCog(cogbase.BaseCog):
9
    def __init__(self, base):
10
        super().__init__(base)
11
12
    # CHANNEL NAMES UPDATES
13
    # Total member channel name
14
    @cog_ext.cog_slash(name="updateTotalMembers", guild_ids=cogbase.GUILD_IDS,
15
                       description="Update total number of members",
16
                       default_permission=False,
17
                       permissions=cogbase.PERMISSION_MODS)
18
    async def update_member_count_command(self, ctx: SlashContext) -> None:
19
        await self.bot.update_member_count(ctx)
20
        await ctx.send("Total Members count updated", hidden=True)
21
22
    # Commons channel name
23
    @cog_ext.cog_slash(name="updateCommons", guild_ids=cogbase.GUILD_IDS,
24
                       description="Update common channel name",
25
                       default_permission=False,
26
                       permissions=cogbase.PERMISSION_MODS)
27
    async def update_common_ch_name(self, ctx: SlashContext) -> None:
28
        with open('./server_files/commons.txt') as f:
29
            try:
30
                commons = f.read().splitlines()
31
            except ValueError:
32
                print(ValueError)
33
34
        await self.update_commons_ch(ctx, commons)
35
36
        commons.append(commons.pop(commons.index(commons[0])))
37
        with open('./server_files/commons.txt', 'w') as f:
38
            for item in commons:
39
                f.write("%s\n" % item)
40
41
    async def update_commons_ch(self, ctx: SlashContext, commons) -> None:
42
        await ctx.defer()
43
        new_name = f"common {commons[0]}"
44
        common_ch = self.bot.get_channel(self.bot.ch_common)
45
        await discord.TextChannel.edit(common_ch, name=new_name)
46
        self.create_log_msg(f"Common channel name updated: {commons[0]}")
47
        await common_ch.send(f"Common changed: **{commons[0]}**")
48
49
    # N-Word spotted channel name
50
    # Doesn't work if used too many times in a short period of time
51
    @cog_ext.cog_slash(name="nightmareStatus", guild_ids=cogbase.GUILD_IDS,
52
                       description="Change Nightmare status channel name",
53
                       default_permission=False,
54
                       permissions=cogbase.PERMISSION_ADMINS)
55
    async def rename_nightmare_channel(self, ctx: SlashContext, status: str) -> None:
56
        new_status = status
57
        channel = self.bot.get_channel(self.bot.ch_nightmare_killed)
58
        if new_status in channel.name:
59
            await ctx.send(f"{channel.name} has been changed", hidden=True)
60
        else:
61
            await discord.VoiceChannel.edit(channel, name=f"N-Word fixed: {new_status}")
62
            await ctx.send(f"{channel.name} channel name has been changed", hidden=True)
63
64
65
def setup(bot: commands.Bot) -> None:
66
    bot.add_cog(ChannelUpCog(bot))
67