-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLog.py
More file actions
119 lines (86 loc) · 3.46 KB
/
Copy pathLog.py
File metadata and controls
119 lines (86 loc) · 3.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
from datetime import datetime
from discord import Embed
from discord.ext.commands import Cog
from discord.ext.commands import command
class Log(Cog):
def __init__(self, bot):
self.bot = bot
@Cog.listener()
async def on_ready(self):
if not self.bot.ready:
self.log_channel = self.bot.get_channel(739304042223632408)
self.bot.cogs_ready.ready_up("log")
@Cog.listener()
async def on_user_update(self, before, after):
if before.name != after.name:
embed = Embed(title="Username change",
colour=after.colour,
timestamp=datetime.utcnow())
fields = [("Before", before.name, False),
("After", after.name, False)]
for name, value, inline in fields:
embed.add_field(name=name, value=value, inline=inline)
await self.log_channel.send(embed=embed)
if before.discriminator != after.discriminator:
embed = Embed(title="Discriminator change",
colour=after.colour,
timestamp=datetime.utcnow())
fields = [("Before", before.discriminator, False),
("After", after.discriminator, False)]
for name, value, inline in fields:
embed.add_field(name=name, value=value, inline=inline)
await self.log_channel.send(embed=embed)
if before.avatar_url != after.avatar_url:
embed = Embed(title="Avatar change",
description="New image is below, old to the right.",
colour=self.log_channel.guild.get_member(after.id).colour,
timestamp=datetime.utcnow())
embed.set_thumbnail(url=before.avatar_url)
embed.set_image(url=after.avatar_url)
await self.log_channel.send(embed=embed)
@Cog.listener()
async def on_member_update(self, before, after):
if before.display_name != after.display_name:
embed = Embed(title="Nickname change",
colour=after.colour,
timestamp=datetime.utcnow())
fields = [("Before", before.display_name, False),
("After", after.display_name, False)]
for name, value, inline in fields:
embed.add_field(name=name, value=value, inline=inline)
await self.log_channel.send(embed=embed)
elif before.roles != after.roles:
embed = Embed(title="Role updates",
colour=after.colour,
timestamp=datetime.utcnow())
fields = [("Before", ", ".join([r.mention for r in before.roles]), False),
("After", ", ".join([r.mention for r in after.roles]), False)]
for name, value, inline in fields:
embed.add_field(name=name, value=value, inline=inline)
await self.log_channel.send(embed=embed)
@Cog.listener()
async def on_message_edit(self, before, after):
if not after.author.bot:
if before.content != after.content:
embed = Embed(title="Message edit",
description=f"Edit by {after.author.display_name}.",
colour=after.author.colour,
timestamp=datetime.utcnow())
fields = [("Before", before.content, False),
("After", after.content, False)]
for name, value, inline in fields:
embed.add_field(name=name, value=value, inline=inline)
await self.log_channel.send(embed=embed)
@Cog.listener()
async def on_message_delete(self, message):
if not message.author.bot:
embed = Embed(title="Message deletion",
description=f"Action by {message.author.display_name}.",
colour=message.author.colour,
timestamp=datetime.utcnow())
fields = [("Content", message.content, False)]
for name, value, inline in fields:
embed.add_field(name=name, value=value, inline=inline)
await self.log_channel.send(embed=embed)
def setup(bot):
bot.add_cog(Log(bot))