예제 #1
0
파일: logs.py 프로젝트: tjespers/Portables
 async def on_server_update(self, before, after):
     if after != self.server:
         return
     if isLogging():
         if before.name != after.name:
             logEvent()
             owner = server.owner
             title = f'**Server Name Changed**'
             colour = 0x00b2ff
             timestamp = datetime.utcnow()
             id = f'Server ID: {after.id}'
             txt = f'Owner: {owner.mention} {owner.name}#{owner.discriminator}'
             url = after.icon_url
             embed = discord.Embed(title=title,
                                   colour=colour,
                                   timestamp=timestamp,
                                   description=txt)
             beforeName = before.name
             if not beforeName:
                 beforeName = 'N/A'
             afterName = after.name
             if not afterName:
                 afterName = 'N/A'
             embed.add_field(name='Before', value=beforeName, inline=False)
             embed.add_field(name='After', value=afterName, inline=False)
             embed.set_footer(text=id)
             embed.set_thumbnail(url=url)
             await self.bot.send_message(self.channel, embed=embed)
             return
예제 #2
0
파일: logs.py 프로젝트: tjespers/Portables
 async def on_message_delete(self, message):
     if message.server != self.server:
         return
     if isLogging():
         global testCounter
         testCounter += 1
         i = testCounter
         bulk = 0
         addDelete()
         count = getDeleteCount()
         await asyncio.sleep(1)
         newCount = getDeleteCount()
         if newCount > count:
             bulk = 0
         elif newCount == 1:
             bulk = 1
         else:
             bulk = newCount
         if count >= newCount:
             resetDeleteCount()
         if message.embeds and bulk == 1 or bulk == 0:
             return
         if bulk > 1:
             logEvent()
             title = f'**Bulk Delete**'
             colour = 0x00b2ff
             timestamp = datetime.utcnow()
             txt = f'{bulk} messages deleted in {message.channel.mention}'
             embed = discord.Embed(title=title,
                                   colour=colour,
                                   timestamp=timestamp,
                                   description=txt)
             await self.bot.send_message(self.channel, embed=embed)
             return
         logEvent()
         member = message.author
         title = f'**Message Deleted**'
         colour = 0x00b2ff
         timestamp = datetime.utcnow()
         id = f'Message ID: {message.id}'
         txt = (
             f'By: {member.mention} {member.name}#{member.discriminator}\n'
             f'In: {message.channel.mention}')
         url = member.avatar_url
         embed = discord.Embed(title=title,
                               colour=colour,
                               timestamp=timestamp,
                               description=txt)
         msg = message.content
         if len(msg) > 1000:
             msg = msg[:1000] + '\n...'
         embed.add_field(name='Message',
                         value=message.content,
                         inline=False)
         embed.set_footer(text=id)
         embed.set_thumbnail(url=url)
         await self.bot.send_message(self.channel, embed=embed)
         return
예제 #3
0
파일: logs.py 프로젝트: tjespers/Portables
 async def on_server_role_delete(self, role):
     if role.server != self.server:
         return
     if isLogging():
         logEvent()
         title = f'**Role Deleted**'
         colour = 0xff0000
         timestamp = datetime.utcnow()
         id = f'Role ID: {role.id}'
         txt = f'{role.name}'
         embed = discord.Embed(title=title,
                               colour=colour,
                               timestamp=timestamp,
                               description=txt)
         embed.set_footer(text=id)
         await self.bot.send_message(self.channel, embed=embed)
         return
예제 #4
0
파일: logs.py 프로젝트: tjespers/Portables
 async def on_channel_create(self, channel):
     if channel.server != self.server:
         return
     if isLogging():
         logEvent()
         title = f'**Channel Created**'
         colour = 0x00e400
         timestamp = datetime.utcnow()
         id = f'Channel ID: {channel.id}'
         txt = f'{channel.mention}'
         embed = discord.Embed(title=title,
                               colour=colour,
                               timestamp=timestamp,
                               description=txt)
         embed.set_footer(text=id)
         await self.bot.send_message(self.channel, embed=embed)
         return
예제 #5
0
파일: logs.py 프로젝트: tjespers/Portables
 async def on_member_unban(self, server, user):
     if server != self.server:
         return
     if isLogging():
         logEvent()
         title = f'**Member Unbanned**'
         colour = 0xff7b1f
         timestamp = datetime.utcnow()
         id = f'User ID: {user.id}'
         txt = f'{user.name}#{user.discriminator}'
         url = user.avatar_url
         embed = discord.Embed(title=title,
                               colour=colour,
                               timestamp=timestamp,
                               description=txt)
         embed.set_footer(text=id)
         embed.set_thumbnail(url=url)
         await self.bot.send_message(self.channel, embed=embed)
         return
예제 #6
0
파일: logs.py 프로젝트: tjespers/Portables
 async def on_server_role_update(self, before, after):
     if after.server != self.server:
         return
     if isLogging():
         if before.name != after.name:
             logEvent()
             title = f'**Role Name Changed**'
             colour = 0x00b2ff
             timestamp = datetime.utcnow()
             id = f'Role ID: {after.id}'
             txt = f'Role: {after.mention}'
             embed = discord.Embed(title=title,
                                   colour=colour,
                                   timestamp=timestamp,
                                   description=txt)
             embed.add_field(name='Before', value=before.name, inline=False)
             embed.add_field(name='After', value=after.name, inline=False)
             embed.set_footer(text=id)
             await self.bot.send_message(self.channel, embed=embed)
             return
예제 #7
0
파일: logs.py 프로젝트: tjespers/Portables
 async def on_channel_delete(self, channel):
     if channel.server != self.server:
         return
     if isLogging():
         logEvent()
         title = f'**Channel Deleted**'
         colour = 0xff0000
         timestamp = datetime.utcnow()
         id = f'Channel ID: {channel.id}'
         creationTime = channel.created_at
         time = f'{creationTime.day} {months[creationTime.month-1]} {creationTime.year}, {creationTime.hour}:{creationTime.minute}'
         txt = (f'**{channel.name}** was deleted\n'
                f'Channel creation: {time}.')
         embed = discord.Embed(title=title,
                               colour=colour,
                               timestamp=timestamp,
                               description=txt)
         embed.set_footer(text=id)
         await self.bot.send_message(self.channel, embed=embed)
         return
예제 #8
0
 async def log(self, ctx):
     '''
     Toggles logging (Leader+).
     '''
     addCommand()
     isLeader = False
     for r in ctx.message.author.roles:
         if r.id == config['leaderRole'] or ctx.message.author.id == config['owner']:
             isLeader = True
             break
     if not isLeader:
         await self.bot.say('Sorry, only leaders have permission to do this.')
         return
     logging = isLogging()
     toggleLogging()
     if logging:
         await self.bot.say(f'Logging has been **disabled**.')
     else:
         await self.bot.say(f'Logging has been **enabled**.')
     return
예제 #9
0
파일: logs.py 프로젝트: tjespers/Portables
 async def on_member_join(self, member):
     if member.server != self.server:
         return
     if isLogging():
         logEvent()
         title = f'**Member Joined**'
         colour = 0x00e400
         timestamp = datetime.utcnow()
         id = f'User ID: {member.id}'
         creationTime = member.created_at
         time = f'{creationTime.day} {months[creationTime.month-1]} {creationTime.year}, {creationTime.hour}:{creationTime.minute}'
         txt = (f'{member.mention} {member.name}#{member.discriminator}\n'
                f'Account creation: {time}')
         url = member.avatar_url
         embed = discord.Embed(title=title,
                               colour=colour,
                               timestamp=timestamp,
                               description=txt)
         embed.set_footer(text=id)
         embed.set_thumbnail(url=url)
         await self.bot.send_message(self.channel, embed=embed)
         return
예제 #10
0
파일: logs.py 프로젝트: tjespers/Portables
 async def on_message_edit(self, before, after):
     if isLogging():
         member = after.author
         if member.bot or before.embeds or after.embeds:
             return
         if after.server != self.server:
             return
         if after.content != before.content:
             logEvent()
             title = f'**Message Edited**'
             colour = 0x00b2ff
             timestamp = datetime.utcnow()
             id = f'Message ID: {after.id}'
             txt = (
                 f'By: {member.mention} {member.name}#{member.discriminator}\n'
                 f'In: {after.channel.mention}')
             url = member.avatar_url
             beforeContent = before.content
             if not beforeContent:
                 beforeContent = 'N/A'
             afterContent = after.content
             if not afterContent:
                 afterContent = 'N/A'
             if len(beforeContent) > 1000:
                 beforeContent = beforeContent[:1000] + '\n...'
             if len(afterContent) > 1000:
                 afterContent = afterContent[:1000] + '\n...'
             embed = discord.Embed(title=title,
                                   colour=colour,
                                   timestamp=timestamp,
                                   description=txt)
             embed.add_field(name='Before',
                             value=beforeContent,
                             inline=False)
             embed.add_field(name='After', value=afterContent, inline=False)
             embed.set_footer(text=id)
             embed.set_thumbnail(url=url)
             await self.bot.send_message(self.channel, embed=embed)
             return
예제 #11
0
파일: logs.py 프로젝트: tjespers/Portables
 async def on_member_remove(self, member):
     if member.server != self.server:
         return
     if isLogging():
         banlist = await self.bot.get_bans(self.server)
         for user in banlist:
             if user == member:
                 return
         logEvent()
         title = f'**Member Left**'
         colour = 0xff0000
         timestamp = datetime.utcnow()
         id = f'User ID: {member.id}'
         txt = f'{member.mention} {member.name}#{member.discriminator}'
         url = member.avatar_url
         embed = discord.Embed(title=title,
                               colour=colour,
                               timestamp=timestamp,
                               description=txt)
         embed.set_footer(text=id)
         embed.set_thumbnail(url=url)
         await self.bot.send_message(self.channel, embed=embed)
         return
예제 #12
0
파일: logs.py 프로젝트: tjespers/Portables
 async def on_server_emojis_update(self, before, after):
     if after:
         if after[0].server != self.server:
             return
     elif before:
         if before[0].server != self.server:
             return
     if isLogging():
         if len(before) != len(after):
             logEvent()
             if len(before) > len(after):
                 title = f'**Emoji Deleted: **'
                 for e in before:
                     if not e in after:
                         title += e.name
                         break
                 colour = 0xff0000
             else:
                 title = f'**Emoji Added: **'
                 for e in after:
                     if not e in before:
                         title += f'{e.name} {str(e)}'
                         break
                 colour = 0x00e400
             timestamp = datetime.utcnow()
             id = f'Server ID: {self.server.id}'
             txt = f'{len(after)}/50 emojis'
             embed = discord.Embed(title=title,
                                   colour=colour,
                                   timestamp=timestamp,
                                   description=txt)
             embed.set_footer(text=id)
             await self.bot.send_message(self.channel, embed=embed)
             return
         beforeNames = []
         for e in before:
             beforeNames.append(e.name)
         afterNames = []
         for e in after:
             afterNames.append(e.name)
         oldName = ''
         newName = ''
         for name in beforeNames:
             if not name in afterNames:
                 oldName = name
         for name in afterNames:
             if not name in beforeNames:
                 newName = name
                 for e in after:
                     if e.name == name:
                         afterEmoji = e
                         break
         if oldName and newName:
             logEvent()
             title = f'**Emoji name changed:** {str(afterEmoji)}'
             colour = 0x00b2ff
             timestamp = datetime.utcnow()
             txt = f'Before: {oldName}\nAfter: {newName}'
             id = f'Server ID: {self.server.id}'
             embed = discord.Embed(title=title,
                                   colour=colour,
                                   timestamp=timestamp,
                                   description=txt)
             embed.set_footer(text=id)
             await self.bot.send_message(self.channel, embed=embed)
             return
예제 #13
0
파일: logs.py 프로젝트: tjespers/Portables
 async def on_member_update(self, before, after):
     if before.server != self.server:
         return
     if before.nick != after.nick and isLogging():
         logEvent()
         title = f'**Nickname Changed**'
         colour = 0x00b2ff
         timestamp = datetime.utcnow()
         id = f'User ID: {after.id}'
         txt = f'{after.mention} {after.name}#{after.discriminator}'
         url = after.avatar_url
         embed = discord.Embed(title=title,
                               colour=colour,
                               timestamp=timestamp,
                               description=txt)
         beforeNick = before.nick
         if not beforeNick:
             beforeNick = 'N/A'
         afterNick = after.nick
         if not afterNick:
             afterNick = 'N/A'
         embed.add_field(name='Before', value=beforeNick, inline=False)
         embed.add_field(name='After', value=afterNick, inline=False)
         embed.set_footer(text=id)
         embed.set_thumbnail(url=url)
         await self.bot.send_message(self.channel, embed=embed)
         return
     elif before.roles != after.roles:
         addedRoles = []
         removedRoles = []
         for r in before.roles:
             if not r in after.roles:
                 removedRoles.append(r)
         for r in after.roles:
             if not r in before.roles:
                 addedRoles.append(r)
         title = f'**Roles Changed**'
         colour = 0x00b2ff
         timestamp = datetime.utcnow()
         id = f'User ID: {after.id}'
         txt = f'{after.mention} {after.name}#{after.discriminator}'
         url = after.avatar_url
         embed = discord.Embed(title=title,
                               colour=colour,
                               timestamp=timestamp,
                               description=txt)
         added = ""
         if addedRoles:
             count = 0
             for role in addedRoles:
                 count += 1
                 added += role.name
                 if count < len(addedRoles):
                     added += ", "
             embed.add_field(name='Added', value=added, inline=False)
         removed = ""
         if removedRoles:
             count = 0
             for role in removedRoles:
                 count += 1
                 removed += role.name
                 if count < len(removedRoles):
                     removed += ", "
             embed.add_field(name='Removed', value=removed, inline=False)
         embed.set_footer(text=id)
         embed.set_thumbnail(url=url)
         for r in self.server.roles:
             if r.id == config['rankRole']:
                 rankRole = r
         if isLogging():
             logEvent()
             await self.bot.send_message(self.channel, embed=embed)
         if 'Smiley' in added and not 'Rank' in removed and not rankRole in before.roles:
             smileyChannel = self.bot.get_channel(config['smileyChannel'])
             locChannel = self.bot.get_channel(config['locChannel'])
             msg = (
                 f'Welcome to {smileyChannel.mention}, {after.mention}!\n'
                 f'Please use this channel for any FC related discussions, questions, and issues.\n\n'
                 f'Please check the pinned messages in this channel and in {locChannel.mention}, where you’ll be able to edit our sheets by updating locations, for important posts and details.'
             )
             await self.bot.send_message(smileyChannel, msg)
         elif 'Rank' in added:
             rankChannel = self.bot.get_channel(config['rankChannel'])
             msg = (
                 f'Welcome {after.mention}, and congratulations on your rank!\n'
                 f'If you have any questions, feel free to ask for help here in {rankChannel.mention}, or DM an Admin+.'
             )
             await self.bot.send_message(rankChannel, msg)
         elif 'Moderator' in added and not 'Admin' in removed:
             modChannel = self.bot.get_channel(config['modChannel'])
             msg = (
                 f'Welcome {after.mention}, and congratulations on your promotion!\n\n'
                 f'As a Moderator, you now have the ability to ban players from the FC. To do so, head over to the \'Bans\' tab on the sheets, and in a new row enter all the necessary information and set the status to \'Pending\'. Then send a message here in {modChannel.mention} along the lines of \"[player] to be banned\", and a Leader will apply the ban for you.\n\n'
                 f'If you have any questions, or if you\'re ever unsure about banning someone, feel free to discuss it here, or DM an Admin+ for advice.'
             )
             await self.bot.send_message(modChannel, msg)
         return