Пример #1
0
 async def mute(self, ctx, *args):
     toMute = myself.getUser(ctx, args, allownoargs=False)
     if not ctx.author.guild_permissions.manage_messages: return await ctx.send('{} | No `manage messages` permission!'.format(self.client.get_emoji(BotEmotes.error)))
     role = Dashboard.getMuteRole(ctx.guild.id)
     if role==None:
         await ctx.send('{} | Please wait... Setting up...\nThis may take a while if your server has a lot of channels.'.format(str(self.client.get_emoji(BotEmotes.loading))))
         role = await ctx.guild.create_role(name='Muted', color=discord.Colour.from_rgb(0, 0, 1))
         ratelimit_counter = 0
         # BEWARE API ABUSE! ADDED SOME STUFF TO REDUCE RATELIMITS
         for i in ctx.guild.channels:
             if ratelimit_counter > 10: # take a break for a while
                 await asyncio.sleep(2)
                 ratelimit_counter = 0 ; continue
             if str(i.type)=='text':
                 await i.set_permissions(role, send_messages=False)
                 ratelimit_counter += 1
             elif str(i.type)=='voice':
                 await i.set_permissions(role, connect=False)
                 ratelimit_counter += 1
         Dashboard.editMuteRole(ctx.guild.id, role.id)
         role = role.id
     role = ctx.guild.get_role(role)
     try:
         await toMute.add_roles(role)
         await ctx.send('{} | Muted. Ductaped {}\'s mouth.'.format(str(self.client.get_emoji(BotEmotes.success)), toMute.name))
     except Exception as e:
         print(e)
         await ctx.send('{} | I cannot mute him... maybe i has less permissions than him.\nHis mouth is too powerful.'.format(str(self.client.get_emoji(BotEmotes.error))))
Пример #2
0
async def on_member_remove(member):
    # REMOVE ALL WARNS
    Dashboard.clearWarn(member)

    # SEND GOODBYE CHANNEL
    goodbye_message, goodbye_channel = Dashboard.send_goodbye(
        member, discord), Dashboard.get_welcome_channel(member.guild.id)
    if goodbye_message != None and goodbye_channel != None:
        await member.guild.get_channel(goodbye_channel).send(
            embed=goodbye_message)
Пример #3
0
async def on_guild_remove(guild):
    Dashboard.delete_data(guild.id)
    # DELETE THE IF-STATEMENT BELOW IF YOU ARE USING THIS CODE
    if guild.owner.id in [
            a.id for a in client.get_guild(Config.SupportServer.id).members
    ]:
        userinsupp = client.get_guild(Config.SupportServer.id).get_member(
            guild.owner.id)
        await userinsupp.remove_roles(
            client.get_guild(
                Config.SupportServer.id).get_role(727667048645394492))
Пример #4
0
 async def dehoister(self, ctx, *args):
     if not ctx.author.guild_permissions.manage_nicknames: return await ctx.send('{} | You need the `Manage Nicknames` permissions!'.format(str(self.client.get_emoji(BotEmotes.error))))
     data = Dashboard.getDehoister(ctx.guild.id)
     if not data: 
         Dashboard.setDehoister(ctx.guild, True)
         return await ctx.send(embed=discord.Embed(
             title='Activated dehoister.',
             description=f'**What is dehoister?**\nDehoister is an automated part of this bot that automatically renames someone that tries to hoist their name (for example: `!ABC`)\n\n**How do i deactivate this?**\nJust type `{Config.prefix}dehoister`.\n\n**It doesn\'t work for me!**\nMaybe because your role position is higher than me, so i don\'t have the permissions required.',
             color=discord.Colour.from_rgb(201, 160, 112)
         ))
     Dashboard.setDehoister(ctx.guild, False)
     await ctx.send('{} | Dehoister deactivated.'.format(self.client.get_emoji(BotEmotes.success)))
Пример #5
0
async def on_guild_channel_create(channel):
    if str(channel.type) not in ['text', 'voice']: return
    data = Dashboard.getMuteRole(channel.guild.id)
    if data == None: return
    if str(channel.type) == 'text':
        return await channel.set_permissions(channel.guild.get_role(data),
                                             send_messages=False)
    await channel.set_permissions(channel.guild.get_role(data), connect=False)
Пример #6
0
async def on_member_join(member):
    # SEND WELCOME CHANNEL
    welcome_message, welcome_channel = Dashboard.send_welcome(
        member, discord), Dashboard.get_welcome_channel(member.guild.id)
    if welcome_message != None and welcome_channel != None:
        await member.guild.get_channel(welcome_channel).send(
            embed=welcome_message)
    data = Dashboard.add_autorole(member.guild.id)
    if data.isnumeric():
        # AUTOROLE
        await member.add_roles(member.guild.get_role(int(data)))
    if member.name.startswith('!'):
        if not Dashboard.getDehoister(member.guild): return
        try:
            await member.edit(nick='Dehoisted user')
        except:
            pass
Пример #7
0
 async def starboard(self, ctx, *args):
     wait = await ctx.send('{} | Please wait...'.format(
         str(self.client.get_emoji(BotEmotes.error))
     ))
     if not ctx.author.guild_permissions.manage_channels:
         return await wait.edit(content='{} | You need the `Manage channels` permission.'.format(
             str(self.client.get_emoji(BotEmotes.error))
         ))
     starboard_channel = Dashboard.getStarboardChannel(ctx.guild)
     if len(list(args))==0:
         if starboard_channel['channelid']==None:
             channel = await ctx.guild.create_text_channel(name='starboard', topic='Server starboard channel. Every funny/cool posts will be here.')
             Dashboard.addStarboardChannel(channel, 1)
             return await wait.edit(content=f'{str(self.client.get_emoji(BotEmotes.success))} | OK. Created a channel <#{str(channel.id)}>. Every starboard will be set there.\nTo remove starboard, type `{Config.prefix}starboard remove`.\nBy default, starboard requirements are set to 1 reaction. To increase, type `{Config.prefix}starboard limit <number>`.')
         return await wait.edit(content='', embed=discord.Embed(
             title=f'Starboard for {ctx.guild.name}',
             description='Channel: <#{}>\nStars required to reach: {}'.format(
                 starboard_channel['channelid'], starboard_channel['starlimit']
             ), color=discord.Colour.from_rgb(201, 160, 112)
         ))
     if starboard_channel['channelid']==None: return
     elif list(args)[0].lower().startswith('rem'):
         Dashboard.removeStarboardChannel(ctx.guild)
         return await wait.edit(content='{} | OK. Starboard for this server is deleted.'.format(str(self.client.get_emoji(BotEmotes.success))))
     elif list(args)[0].lower()=='limit':
         try:
             num = int(list(args)[1])
             if not num in range(1, 20):
                 return await wait.edit(content='{} | Invalid number.'.format(str(self.client.get_emoji(BotEmotes.error))))
             Dashboard.setStarboardLimit(num, ctx.guild)
             await wait.edit(content='{} | Set the limit to {} reactions.'.format(str(self.client.get_emoji(BotEmotes.success)), str(num)))
         except:
             await wait.edit(content='{} | Invalid number.'.format(str(self.client.get_emoji(BotEmotes.error))))
Пример #8
0
 async def unwarn(self, ctx):
     if not ctx.author.guild_permissions.manage_messages:
         return await ctx.send(f'{str(self.client.get_emoji(BotEmotes.error))} | You need the `Manage messages` permissions to unwarn someone.')
     if len(ctx.message.mentions)==0: return await ctx.send('{} | Please TAG someone !!!'.format(
         str(self.client.get_emoji(BotEmotes.error))
     ))
     unwarned = Dashboard.clearWarn(ctx.message.mentions[0])
     if unwarned: return await ctx.send(f'{str(self.client.get_emoji(BotEmotes.success))} | Successfully unwarned {ctx.message.mentions[0].name}.')
     await ctx.send(f'{str(self.client.get_emoji(BotEmotes.error))} | An error occurred.')
Пример #9
0
async def on_member_update(before, after):
    if before.nick == after.nick: return
    elif after.nick == None: return
    if after.nick.startswith('!'):
        if not Dashboard.getDehoister(after.guild.id): return
        try:
            await after.edit(nick='Dehoisted user')
        except:
            pass
Пример #10
0
 async def config(self, ctx):
     data = Dashboard.getData(ctx.guild.id)
     if data==None: return await ctx.send('{} | This server does not have any configuration for this bot.'.format(self.client.get_emoji(BotEmotes.error)))
     autorole = 'Set to <@&{}>'.format(data['autorole']) if data['autorole']!=None else '<Not set>'
     welcome = 'Set to <#{}>'.format(data['welcome']) if data['welcome']!=None else '<Not set>'
     starboard = 'Set to <#{}> (with {} reactions required)'.format(data['starboard'], data['star_requirements']) if data['starboard']!=None else '<Not set>'
     mute = 'Set to <@&{}>'.format(data['mute']) if data['mute']!=None else '<Not set>'
     extras = [len(data['shop']), len(data['warns'])]
     dehoister = 'Enabled :white_check_mark:' if data['dehoister'] else 'Disabled :x:'
     await ctx.send(embed=discord.Embed(title=f'{ctx.guild.name}\'s configuration', description=f'**Auto role:** {autorole}\n**Welcome channel:** {welcome}\n**Starboard channel: **{starboard}\n**Name/nick dehoister: **{dehoister}\n**Mute role: **{mute}\n**Members warned: **{extras[1]}\n**Shop products sold: **{extras[0]}', color=discord.Colour.from_rgb(201, 160, 112)).set_thumbnail(url=ctx.guild.icon_url))
Пример #11
0
 async def unmute(self, ctx):
     toUnmute = myself.getUser(ctx, args, allownoargs=False)
     roleid = Dashboard.getMuteRole(ctx.guild.id)
     if roleid==None: return await ctx.send('{} | He is not muted!\nOr maybe you muted this on other bot... which is not compatible.'.format(self.client.get_emoji(BotEmote.error)))
     elif roleid not in [i.id for i in ctx.message.mentions[0].roles]:
         return await ctx.send('{} | That guy is not muted.'.format(self.client.get_emoji(BotEmotes.error)))
     try:
         await toUnmute.remove_roles(ctx.guild.get_role(roleid))
         await ctx.send('{} | {} unmuted.'.format(self.client.get_emoji(BotEmotes.success), toUnmute.name))
     except:
         await ctx.send('{} | I cannot unmute {}!'.format(self.client.get_emoji(BotEmotes.error), ctx.message.mentions[0].name))
Пример #12
0
async def on_raw_reaction_add(payload):
    # IF IS NOT STAR EMOJI, IGNORE
    if str(payload.emoji) != 'тнР': return
    data = Dashboard.getStarboardChannel(None, guildid=payload.guild_id)
    if data == None: return
    try:
        messages = await client.get_channel(data['channelid']
                                            ).history().flatten()
        starboards = [
            int(str(message.content).split(': ')[1]) for message in messages
            if message.author.id == Config.id
        ]
        if payload.message_id in starboards: return
    except:
        return
    message = await client.get_channel(payload.channel_id
                                       ).fetch_message(payload.message_id)
    if len(message.reactions) == data['starlimit']:
        await client.get_channel(data['channelid']).send(
            content=f'ID: {message.id}',
            embed=Dashboard.sendStarboard(discord, message))
Пример #13
0
 async def autorole(self, ctx, *args):
     if not ctx.author.guild_permissions.manage_roles:
         await ctx.send("{} | You need the `Manage Roles` permission!".format(str(self.client.get_emoji(BotEmotes.error))))
     else:
         if len(list(args))==0:
             await ctx.send(embed=discord.Embed(
                 title='Command usage',
                 description='{}autorole <ROLENAME/ROLEPING>\n{}autorole disable'.format(Config.prefix, Config.prefix),
                 color=discord.Color.from_rgb(201, 160, 112)
             ))
         else:
             if list(args)[0].lower()=='disable':
                 Dashboard.set_autorole(ctx.guild.id, None)
                 await ctx.send("{} | Autorole disabled!".format(str(self.client.get_emoji(BotEmotes.success))))
             else:
                 try:
                     if list(args)[0].startswith("<@&") and list(args)[0].endswith('>'): roleid = int(list(args)[0].split('<@&')[1].split('>')[0])
                     else: roleid = int([i.id for i in ctx.guild.roles if str(i.name).lower()==str(' '.join(list(args))).lower()][0])
                     Dashboard.set_autorole(ctx.guild.id, roleid)
                     await ctx.send("{} | Success! set the autorole to **{}!**".format(str(self.client.get_emoji(BotEmotes.success)), ctx.guild.get_role(roleid).name))
                 except:
                     await ctx.send("{} | Invalid arguments!".format(str(self.client.get_emoji(BotEmotes.error))))
Пример #14
0
 async def welcome(self, ctx, *args):
     if not ctx.author.guild_permissions.manage_channels:
         await ctx.send("{} | You need the `Manage Channels` permission!".format(str(self.client.get_emoji(BotEmotes.error))))
     else:
         if len(list(args))==0:
             await ctx.send(embed=discord.Embed(
                 title='Command usage',
                 description='{}welcome <CHANNEL>\n{}welcome disable'.format(Config.prefix, Config.prefix),
                 color=discord.Color.from_rgb(201, 160, 112)
             ))
         else:
             if list(args)[0].lower()=='disable':
                 Dashboard.set_welcome(ctx.guild.id, None)
                 await ctx.send("{} | Welcome disabled!".format(str(self.client.get_emoji(BotEmotes.success))))
             else:
                 try:
                     if list(args)[0].startswith("<#") and list(args)[0].endswith('>'): channelid = int(list(args)[0].split('<#')[1].split('>')[0])
                     else: channelid = int([i.id for i in ctx.guild.channels if str(i.name).lower()==str(''.join(list(args))).lower()][0])
                     Dashboard.set_welcome(ctx.guild.id, channelid)
                     await ctx.send("{} | Success! set the welcome log to <#{}>!".format(str(self.client.get_emoji(BotEmotes.success)), channelid))
                 except Exception as e:
                     await ctx.send("{} | Invalid arguments!".format(str(self.client.get_emoji(BotEmotes.error))))
Пример #15
0
 async def warnlist(self, ctx):
     source = ctx.author if (len(ctx.message.mentions)==0) else ctx.message.mentions[0]
     data = Dashboard.getWarns(source)
     if data==None: return await ctx.send(f'{str(self.client.get_emoji(BotEmotes.error))} | Good news! {source.name} does not have any warns!')
     warnlist = '\n'.join([
         '{}. "{}" (warned by <@{}>)'.format(
             i+1, data[i]['reason'], data[i]['moderator']
         ) for i in range(0, len(data))
     ][0:10])
     await ctx.send(embed=discord.Embed(
         title=f'Warn list for {source.name}',
         description=warnlist,
         color=discord.Colour.red()
     ))
Пример #16
0
 async def warn(self, ctx, *args):
     if len(ctx.message.mentions)==0:
         return await ctx.send('{} | Mention someone.'.format(str(self.client.get_emoji(BotEmotes.error))))
     elif ctx.message.mentions[0].id == ctx.author.id:
         return await ctx.send(':joy: | Warning yourself? Really?')
     elif not ctx.author.guild_permissions.manage_messages:
         return await ctx.send('{} | You need to have manage messages permissions to do this man. Sad.'.format(str(self.client.get_emoji(BotEmotes.error))))
     reason = 'No reason provided' if (len(list(args))<2) else ' '.join(list(args)[1:len(list(args))])
     if len(reason)>100: return await ctx.send('{} | Your reason is toooo longgg!'.format(
         str(self.client.get_emoji(BotEmotes.error))
     ))
     warned = Dashboard.addWarn(ctx.message.mentions[0], ctx.author, reason)
     if warned:
         return await ctx.send(f'{str(self.client.get_emoji(BotEmotes.success))} | {ctx.message.mentions[0].name}#{ctx.message.mentions[0].discriminator} was warned by {ctx.author.name}#{ctx.author.discriminator} for the reason *"{reason}"*.')
     await ctx.send(f'{str(self.client.get_emoji(BotEmotes.error))} | An error occurred.')
Пример #17
0
async def on_guild_channel_delete(channel):
    # IF CHANNEL MATCHES WITHIN DATABASE, DELETE IT ON DATABASE AS WELL
    Dashboard.databaseDeleteChannel(channel)
Пример #18
0
async def on_guild_role_delete(role):
    muterole = Dashboard.getMuteRole(role.guild.id)
    if muterole == None: return
    if muterole != role.id: return
    Dashboard.editMuteRole(role.guild.id, None)