示例#1
0
    async def list(self, ctx):

        if not ctx.guild:
            return

        if not ctx.guild.id == self.MAL_ID:
            return

        if not sql.isStaff(ctx.author):
            return await ctx.send(embed=func.NoPerm())

        channellist = open(self.SAVELOC + 'cotd.txt', 'r').read().split('\n')

        chanstr = ''

        for i in channellist:
            if i == '':
                continue
            splitted = i.split('|')

            channel = await self.bot.fetch_channel(int(splitted[0]))

            chanstr += f'{channel.mention} - {self.yesno(splitted[1])}\n'
        if chanstr != '':
            await ctx.send(embed=func.Embed(chanstr))
        else:
            await ctx.send(embed=func.Embed('The channel list is empty!'))
        return
    async def snipe(self, ctx):

        with open("./data/sniper.json") as f:
            self.sniper = json.load(f)

            if not ctx.author.guild_permissions.manage_messages:
                return await ctx.send(embed=func.NoPerm(self, ctx.guild.id),
                                      delete_after=15)
            if not str(ctx.guild.id) in self.sniper:
                return await ctx.send(embed=func.BadResponseEmbed(
                    self, ctx.guild.id,
                    Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                                 "Errors", "NoSnipeMessage")))
            if not str(ctx.channel.id) in self.sniper[str(ctx.guild.id)]:
                return await ctx.send(embed=func.BadResponseEmbed(
                    self, ctx.guild.id,
                    Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                                 "Errors", "NoSnipeMessage")))

            user = await self.bot.fetch_user(self.sniper[str(
                ctx.guild.id)][str(ctx.channel.id)]["AuthorID"])

            embed = discord.Embed(colour=discord.Colour(0x27b1db),
                                  description=self.sniper[str(
                                      ctx.guild.id)][str(
                                          ctx.channel.id)]["Message"])

            embed.set_author(name=user.name, icon_url=user.avatar_url)

            await ctx.send(embed=embed)

            del self.sniper[str(ctx.guild.id)]
            with open("./data/sniper.json", "w") as f:
                json.dump(self.sniper, f, indent=4)
示例#3
0
    async def cog(self, ctx):
        if not sql.isOwner(ctx.author.id):
            return await ctx.send(embed=func.NoPerm())

        await ctx.send(embed=func.Embed(
            "**cog load** - Load a cog.\n**cog unload** - Unload a cog.\n**cog reload** - Reload a cog\n**cog list** - Lists all cogs."
        ))
示例#4
0
    async def shutdown(self, ctx):

        if not sql.isOwner(ctx.author):
            return await ctx.send(embed=func.NoPerm())

        await ctx.send("Shutting down...")
        await self.bot.logout()
示例#5
0
    async def remove(self, ctx, channel: discord.TextChannel = None):

        if not ctx.guild:
            return

        if not ctx.guild.id == self.MAL_ID:
            return

        if not sql.isStaff(ctx.author):
            return await ctx.send(embed=func.NoPerm())

        if not channel:
            return await ctx.send(embed=func.ErrorEmbed(
                'Please mention a channel to remove from the list'))

        channellist = open(self.SAVELOC + 'cotd.txt', 'r').read().split('\n')

        if str(channel.id) not in [i.split('|')[0] for i in channellist]:
            return await ctx.send(
                embed=func.ErrorEmbed(f'{channel.mention} is not in the list'))

        await ctx.send(embed=func.Embed(
            f'Channel {channel.mention} has been removed from the list'))

        st = ''
        for i in channellist:
            if i.split('|')[0] != str(channel.id):
                st += f'\n{i}'

        write = open(self.SAVELOC + 'cotd.txt', 'w')
        write.write(st)
        write.close()
示例#6
0
    async def add(self, ctx, user: discord.User = None, access: str = None):

        types = ['owner', 'admin']

        if not sql.isOwner(ctx.author.id):
            return await ctx.send(embed=func.NoPerm())

        if not user or not access:
            return await ctx.send(
                embed=func.ErrorEmbed(f"Mention a user & access rank"))

        if access not in types:
            return await ctx.send(
                embed=func.ErrorEmbed(f"Please type 'admin' or 'owner'"))

        if access == 'owner':
            type = 2

        elif access == 'admin':
            type = 1

        if not sql.isStaff(user):
            if sql.SetAccess(user, type):
                await ctx.send(
                    embed=func.Embed(f"Gave {user.mention} {access}."))
            else:
                await ctx.send(embed=func.ErrorEmbed(
                    "Something went wrong. Please try again"))
        else:
            await ctx.send(
                embed=func.ErrorEmbed("That user already has access rights"))
示例#7
0
    async def access(self, ctx):

        if not sql.isOwner(ctx.author.id):
            return await ctx.send(embed=func.NoPerm())

        await ctx.send(embed=func.ErrorEmbed(
            f"Usage:\n\n{ctx.prefix}access add @user [Type]\n{ctx.prefix}access remove @user\n{ctx.prefix}access list\n\n Access Types: admin & owner"
        ))
示例#8
0
    async def list(self, ctx):
        if not sql.isOwner(ctx.author.id):
            return await ctx.send(embed=func.NoPerm())

        cogs = []
        for file in os.listdir("modules"):
            if file.endswith(".py"):
                name = file[:-3]
                cogs.append(name)
        await ctx.send(embed=func.Embed("\n".join(cogs)))
 async def say(self, ctx, *args):
     try:
         if ctx.author.guild_permissions.manage_messages:
             await ctx.message.delete()
             message = ' '.join(args)
             await ctx.send(message)
         else:
             await ctx.send(embed=func.NoPerm(self, ctx.guild.id))
     except:
         return
示例#10
0
    async def remove(self, ctx, member: discord.Member = None, id=None):

        if not ctx.author.guild_permissions.manage_messages:
            return await ctx.send(embed=func.NoPerm(self, ctx.guild.id),
                                  delete_after=15)

        if not member:
            return await ctx.send(embed=func.BadResponseEmbed(
                self, ctx.guild.id,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "Errors", "NoInfractionsUser")),
                                  delete_after=15)

        if not id:
            return await ctx.send(embed=func.BadResponseEmbed(
                self, ctx.guild.id, "{} {}{}".format(
                    Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                                 "Errors", "NeedID"), ctx.prefix,
                    Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                                 "Errors", "NeedIDEnd"))),
                                  delete_after=15)

        rm = sql.RemoveInfraction(id, ctx.guild.id, member.id)
        channel = await self.bot.fetch_channel(
            self.bot.cache[ctx.guild.id]["Logs"])

        if not rm:
            return await ctx.send(embed=func.BadResponseEmbed(
                self, ctx.guild.id, "{} {}: {}".format(
                    member.mention,
                    Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                                 "Errors", "DoesntHave"), id)),
                                  delete_after=15)

        await ctx.send(embed=func.GoodResponseEmbed(
            self, ctx.guild.id, "{} {} {}".format(
                member.mention,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "InfractionRemoved"), id)))

        if channel:
            await channel.send(embed=func.GoodResponseEmbed(
                self, ctx.guild.id, "{} {} {}".format(
                    member.mention,
                    Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                                 "InfractionRemoved"), id)))

        sql.LogMe(
            ctx.guild.id, 5, "{} ({}) {}: {} {} {}".format(
                ctx.author.display_name, ctx.author.name,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "UnWarned"), id,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "From"), member.name))
示例#11
0
    async def load(self, ctx, cog: str = None):
        if not sql.isOwner(ctx.author.id):
            return await ctx.send(embed=func.NoPerm())

        if not cog:
            await ctx.send(embed=func.ErrorEmbed("Please name a cog to load"))

        try:
            self.bot.load_extension(f"modules.cogs.{cog}")
            await ctx.send(embed=func.Embed(f"{cog} was successfully loaded."))
        except Exception as error:
            await ctx.send(embed=func.ErrorEmbed(f"{cog} failed to load"))
            await ctx.author.send(error)
示例#12
0
    async def list(self, ctx):
        if not sql.isStaff(ctx.author):
            return await ctx.send(embed=func.NoPerm())

        supporter_roles = sql.getSupportRoles()

        roless = []

        for i in supporter_roles:
            role = discord.utils.get(ctx.guild.roles, id=int(i))

            roless.append(role.name)

        await ctx.send(embed=func.Embed("\n".join(roless)))
示例#13
0
    async def warn(self, ctx, member: discord.Member = None, reason=None):

        if not ctx.author.guild_permissions.manage_messages:
            return await ctx.send(embed=func.NoPerm(self, ctx.guild.id),
                                  delete_after=15)

        if not member:
            return await ctx.send(embed=func.BadResponseEmbed(
                self, ctx.guild.id,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "Errors", "WarnNoUser")),
                                  delete_after=15)

        if not reason:
            reason = Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                                  "NoReason")

        channel = await self.bot.fetch_channel(
            self.bot.cache[ctx.guild.id]["Logs"])

        sql.Warn(ctx.guild.id, member.id, ctx.author.id, reason)

        await member.send(embed=func.Alert(
            self, member, ctx.guild,
            Language.get(ctx.guild.id, self.bot.cache, "Moderator", "Warned"),
            ctx.author, reason))
        await ctx.send(embed=func.GoodResponseEmbed(
            self, ctx.guild.id, "{} {} {} | {}: {}".format(
                member.mention,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "WasWarned"), ctx.author.mention,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "Reason"), reason)))
        await Rules.DoRule(self, member, ctx.guild, self.bot.tobemuted,
                           self.bot.tobekicked, self.bot.tobebanned)
        if channel:
            await channel.send(embed=func.GoodResponseEmbed(
                self, ctx.guild.id, "{} {} {} | {}: {}".format(
                    member.mention,
                    Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                                 "WasWarned"), ctx.author.mention,
                    Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                                 "Reason"), reason)))
        sql.LogMe(
            ctx.guild.id, 5, "{} ({}) {} {}. {}: {}".format(
                ctx.author.display_name, ctx.author.name,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "Warned"), member.name,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "Reason"), reason))
示例#14
0
    async def add(self, ctx, channel: discord.TextChannel = None):

        if not ctx.guild:
            return

        if not ctx.guild.id == self.MAL_ID:
            return

        if not sql.isStaff(ctx.author):
            return await ctx.send(embed=func.NoPerm())

        if not channel:
            return await ctx.send(embed=func.ErrorEmbed(
                'Please mention a channel to add to the list'))

        multiple = False

        if len(ctx.message.channel_mentions) > 1:
            multiple = True

        multilist = []

        for i in ctx.message.channel_mentions:

            channellist = open(self.SAVELOC + 'cotd.txt',
                               'r').read().split('\n')
            if str(i.id) in [i.split('|')[0] for i in channellist]:
                await ctx.send(embed=func.ErrorEmbed(
                    f'{i.mention} is already in the list, skipping..'))
                continue

            if not multiple:
                await ctx.send(embed=func.Embed(
                    f'Channel {i.mention} has been added to the list'))

            write = open(self.SAVELOC + 'cotd.txt', 'a')
            write.write(f"\n{i.id}|0")
            write.close()

            multilist.append(i)

        if multiple:
            channelmentions = ''
            for i in multilist:
                channelmentions += f'{i.mention}, '

            await ctx.send(embed=func.Embed(
                f'Channels {channelmentions} have been added to the list'))
    async def ban(self, ctx, user: discord.User = None, *args):

        if not ctx.author.guild_permissions.ban_members:
            return await ctx.send(embed=func.NoPerm(self, ctx.guild.id),
                                  delete_after=15)

        if not user:
            return await ctx.send(embed=func.BadResponseEmbed(
                self, ctx.guild.id,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "Errors", "BanNoUser")),
                                  delete_after=15)

        reason = ' '.join(args)
        channel = await self.bot.fetch_channel(
            self.bot.cache[ctx.guild.id]["Logs"])

        if reason == "":
            reason = Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                                  "NoReason")

        await user.send(embed=func.Alert(
            self, user, ctx.guild,
            Language.get(ctx.guild.id, self.bot.cache, "Moderator", "Banned"),
            ctx.author.name, reason))
        await ctx.send(embed=func.GoodResponseEmbed(
            self, ctx.guild.id, "{} {} {} | {}: {}".format(
                user.mention,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "WasBanned"), ctx.author.mention,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "Reason"), reason)))
        if channel:
            await channel.send(embed=func.GoodResponseEmbed(
                self, ctx.guild.id, "{} {} {} | {}: {}".format(
                    user.mention,
                    Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                                 "WasBanned"), ctx.author.mention,
                    Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                                 "Reason"), reason)))
        await ctx.guild.ban(user, reason=reason, delete_message_days=7)
        sql.LogMe(
            ctx.guild.id, 8, "{} ({}) {} {}. {}: {}".format(
                ctx.author.display_name, ctx.author.name,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "Banned"), user.name,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "Reason"), reason))
示例#16
0
    async def removeall(self, ctx):

        if not ctx.guild:
            return

        if not ctx.guild.id == self.MAL_ID:
            return

        if not sql.isStaff(ctx.author):
            return await ctx.send(embed=func.NoPerm())

        write = open(self.SAVELOC + 'cotd.txt', 'w')
        write.write('')
        write.close()

        await ctx.send(embed=func.Embed('The list has been cleared!'))
示例#17
0
    async def clear(self, ctx):

        if not await sql.isSupporter(ctx.author):
            return await ctx.send(embed=func.NoPerm())

        if ctx.channel.id != self.spam_id:
            return await self.spam.send(f"{ctx.author.mention} Try here",
                                        delete_after=30)

        for roles in ctx.author.roles:
            if roles.id in self.color_roles:
                role = discord.utils.get(ctx.guild.roles, id=roles.id)
                await ctx.author.remove_roles(role)

        embed = func.Embed(f"**{ctx.author.name}** Cleared their color roles!")
        await ctx.send(embed=embed)
示例#18
0
    async def reset(self, ctx):

        if not ctx.guild:
            return

        if not ctx.guild.id == self.MAL_ID:
            return

        if not sql.isStaff(ctx.author):
            return await ctx.send(embed=func.NoPerm())

        channellist = open(self.SAVELOC + 'cotd.txt', 'r').read().split('\n')

        msg = await ctx.send(embed=func.Embed('Resetting the list....'))

        st = ''
        for i in channellist:
            if i != '':
                try:
                    trye = await self.bot.fetch_channel(int(i.split('|')[0]))
                    st += '\n{}|0'.format(i.split('|')[0])
                except:
                    pass

        write = open(self.SAVELOC + 'cotd.txt', 'w')
        write.write(st)
        write.close()
        save = open(self.SAVELOC + 'cotdSave.txt', 'r').read().split('\n')

        try:
            returnchannel = await self.bot.fetch_channel(int(save[0]))
            returncategory = await self.bot.fetch_channel(int(save[2]))
            try:
                await returnchannel.edit(name=save[1],
                                         category=returncategory,
                                         position=int(save[3]))
            except:
                pass
        except:
            pass

        reset = open(self.SAVELOC + 'cotdSave.txt', 'w')
        reset.close()

        await msg.edit(embed=func.Embed('The list has been resetted!'))
示例#19
0
    async def remove(self, ctx, user: discord.User = None):

        if not sql.isOwner(ctx.author.id):
            return await ctx.send(embed=func.NoPerm())

        if not user:
            return await ctx.send(embed=func.ErrorEmbed(f"Mention a user"))

        if sql.isStaff(user):
            if sql.DelAccess(user):
                await ctx.send(
                    embed=func.Embed(f"Removed {user.mention}'s rights"))
            else:
                await ctx.send(embed=func.ErrorEmbed(
                    "Something went wrong. Please try again"))
        else:
            await ctx.send(
                embed=func.ErrorEmbed("That user has no access rights"))
示例#20
0
    async def unload(self, ctx, cog: str = None):
        if not sql.isOwner(ctx.author.id):
            return await ctx.send(embed=func.NoPerm())

        if not cog:
            return await ctx.send(
                embed=func.ErrorEmbed("Please name a cog to load"))

        if cog == "Commands":
            return await ctx.send(
                embed=func.ErrorEmbed("That is a required cog. Try another"))

        try:
            self.bot.unload_extension(f"modules.{cog}")
            await ctx.send(
                embed=func.Embed(f"{cog} was successfully unloaded."))
        except Exception as error:
            await ctx.send(embed=func.ErrorEmbed(f"{cog} failed to unload"))
            func.log(error)
    async def clear(self, ctx, amount: int = None):

        if not ctx.author.guild_permissions.manage_messages:
            return await ctx.send(embed=func.NoPerm(self, ctx.guild.id),
                                  delete_after=15)

        await ctx.message.delete()

        if not amount or amount > 100 or amount < 1:
            return await ctx.send(embed=func.BadResponseEmbed(
                self, ctx.guild.id,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "Errors", "Upto100")),
                                  delete_after=15)

        dela = await ctx.channel.purge(limit=amount)
        await ctx.send("{}: {}".format(
            Language.get(ctx.guild.id, self.bot.cache, "Moderator", "Deleted"),
            len(dela)),
                       delete_after=15)
示例#22
0
    async def remove(self, ctx, roleid: int = None):
        if not sql.isStaff(ctx.author):
            return await ctx.send(embed=func.NoPerm())

        if not roleid:
            return await ctx.send(
                embed=func.ErrorEmbed(f"Please provide me with a role ID"))

        role = discord.utils.get(ctx.guild.roles, id=roleid)

        if not role:
            return await ctx.send(
                embed=func.ErrorEmbed("I couldnt find that role"))

        if sql.delSupportRole(roleid):
            await ctx.send(
                embed=func.Embed(f"Removed {role.name} from the database"))
        else:
            await ctx.send(
                embed=func.ErrorEmbed("That role is not in the database"))
示例#23
0
    async def list(self, ctx):

        if not sql.isOwner(ctx.author.id):
            return await ctx.send(embed=func.NoPerm())

        unformatted = sql.getallAccess()

        formatted = []

        for i in unformatted:
            user = await self.bot.fetch_user(i[0])

            if i[1] == 1:
                type = "Admin Access"

            if i[1] == 2:
                type = "Owner Access"

            formatted.append(f"{user.mention} - {type}")

        await ctx.send(embed=func.Embed("\n".join(formatted)))
示例#24
0
    async def shoob(self, ctx, event=None, duration=None, *args):

        if not await sql.isStaff(ctx.author):
            return await ctx.send(embed=func.NoPerm())

        if not event or not duration or not args:
            return await ctx.send(embed=func.Embed(
                f"If you want to start an event use the command like this:\n\n{ctx.prefix}shoob event [duration] [card]\n\nDurations: m, h, d, w"
            ))

        self.event["Reward"] = ' '.join(args)
        self.event["TotalDuration"] = self.timeformat(duration)
        self.event["Remaining"] = self.event["TotalDuration"]
        self.channel = ctx.channel

        embed = await self.EventMessage()
        self.event_message = await ctx.send(embed=embed)
        self.event["Started"] = True

        embed = await self.leaderboardsMessage()
        self.leaderboard_message = await ctx.send(embed=embed)
示例#25
0
    async def infractions(self, ctx, member: discord.Member = None):

        if not ctx.author.guild_permissions.manage_messages:
            return await ctx.send(embed=func.NoPerm(self, ctx.guild.id),
                                  delete_after=15)

        if not member:
            return await ctx.send(embed=func.BadResponseEmbed(
                self, ctx.guild.id,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "Errors", "NoInfractionsUser")),
                                  delete_after=15)

        infr = sql.GetInfractions(ctx.guild.id, member.id)

        if not infr:
            return await ctx.send(embed=func.BadResponseEmbed(
                self, ctx.guild.id, "{} {}".format(
                    member.mention,
                    Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                                 "Errors", "HasNoInfractions"))),
                                  delete_after=15)

        embed = discord.Embed(colour=0x27b1db)

        for i in infr:
            u = await self.bot.fetch_user(i[3])
            desc = "{} {} {} @ {} | {}: {}".format(
                member.mention,
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "WarnedBy"), u.mention, i[5],
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "Reason"), i[4])
            embed.add_field(name="{}: {}".format(
                Language.get(ctx.guild.id, self.bot.cache, "Moderator",
                             "InfractID"), i[0]),
                            value=desc,
                            inline=False)

        await ctx.send(embed=embed)
示例#26
0
    async def color(self, ctx, number=None):

        if not number.isdigit():
            return

        if not await sql.isSupporter(ctx.author):
            return await ctx.send(embed=func.NoPerm())

        if ctx.channel.id != self.spam_id:
            return await self.spam.send(f"{ctx.author.mention} Try here",
                                        delete_after=30)

        if not number or number < 1 or number > 15:
            embed = discord.Embed(
                title=
                f"Type {ctx.prefix}color <number> with the number you want",
                colour=discord.Colour(0xd42c2c),
                timestamp=datetime.datetime.utcfromtimestamp(1579828506))
            embed.set_image(url="https://i.imgur.com/H8Wk8wG.png")
            return await ctx.send(embed=embed)

        for roles in ctx.author.roles:
            if roles.id in self.color_roles:
                role = discord.utils.get(ctx.guild.roles, id=roles.id)
                await ctx.author.remove_roles(role)

        roleid = self.color_roles[number - 1]
        role = discord.utils.get(ctx.guild.roles, id=roleid)
        await ctx.author.add_roles(role)

        embed = discord.Embed(
            title=f"Role Added",
            description=f"**{ctx.author.name}** obtained color {number}!",
            colour=discord.Colour(0xcf53ee))
        embed.set_footer(
            text=f"Use `{ctx.prefix}colour clear` to remove your colour")
        await ctx.send(embed=embed)
示例#27
0
 async def cancel(self, ctx):
     if not await sql.isStaff(ctx.author):
         return ctx.send(embed=func.NoPerm())
示例#28
0
    async def _choosenow(self, ctx):

        if not ctx.guild:
            return

        if not ctx.guild.id == self.MAL_ID:
            return

        if not sql.isStaff(ctx.author):
            return await ctx.send(embed=func.NoPerm())

        chooselist = []

        channellist = open(self.SAVELOC + 'cotd.txt', 'r').read().split('\n')

        for i in channellist:
            if '|0' in i:
                chooselist.append(int(i.split('|')[0]))

        save = open(self.SAVELOC + 'cotdSave.txt', 'r').read().split('\n')

        if chooselist == []:
            try:
                returnchannel = await self.bot.fetch_channel(int(save[0]))
                returncategory = await self.bot.fetch_channel(int(save[2]))
                await ctx.send(embed=func.ErrorEmbed(
                    'Cant choose from complete or empty list'))
                try:
                    await returnchannel.edit(name=save[1],
                                             category=returncategory,
                                             position=int(save[3]))
                except:
                    pass
            except:
                pass

            channellist = open(self.SAVELOC + 'cotd.txt',
                               'r').read().split('\n')

            st = ''
            for i in channellist:
                if i != '':
                    st += '\n{}|0'.format(i.split('|')[0])

            write = open(self.SAVELOC + 'cotd.txt', 'w')
            write.write(st)
            write.close()
            reset = open(self.SAVELOC + 'cotdSave.txt', 'w')
            reset.close()

            chooselist = []

            channellist = open(self.SAVELOC + 'cotd.txt',
                               'r').read().split('\n')

            for i in channellist:
                if '|0' in i:
                    chooselist.append(int(i.split('|')[0]))

            save = open(self.SAVELOC + 'cotdSave.txt', 'r').read().split('\n')

        channel = await self.bot.fetch_channel(int(choice(chooselist)))

        st = ''
        for i, v in enumerate(channellist):
            if v.startswith(str(channel.id)):
                channellist[i] = f'{channel.id}|1'
            st += '\n%s' % (channellist[i])

        write = open(self.SAVELOC + 'cotd.txt', 'w')
        write.write(st)
        write.close()

        if len(save) == 4:
            try:
                returnchannel = await self.bot.fetch_channel(int(save[0]))
                returncategory = await self.bot.fetch_channel(int(save[2]))
            except:
                pass
            try:
                await returnchannel.edit(name=save[1],
                                         category=returncategory,
                                         position=int(save[3]))
            except:
                pass

        new = open(self.SAVELOC + 'cotdSave.txt', 'w')
        new.write(
            f'{channel.id}\n{channel.name}\n{channel.category_id}\n{channel.position}'
        )
        new.close()

        newname = '\N{tulip}\u30FB'
        for i in channel.name:
            if i in string.ascii_letters or i == '-':
                newname += i

        try:
            await ctx.send(embed=func.Embed(f'Chose {channel.name}'))
            await channel.edit(name=newname, category=None)

            pingrole = discord.utils.get(discord.utils.get(
                self.bot.guilds, id=self.MAL_ID).roles,
                                         id=self.pingroleid)
            await pingrole.edit(mentionable=True)
            await channel.send(f'{pingrole.mention}', delete_after=2)
            await pingrole.edit(mentionable=False)
        except:
            return