Hey so this code works completely fine but my problem is that it gets info of all the servers that the bot is in.
JavaScript
x
16
16
1
@commands.Cog.listener()
2
async def on_user_update(self, before, after):
3
logs = self.bot.get_channel(810977833823240262)
4
embed = discord.Embed(colour=0x7289da)
5
embed.description = f"{after.name} has changed his avatar"
6
if before.avatar_url != after.avatar_url:
7
embed.add_field(name="New avatar")
8
embed.set_image(url=after.avatar_url)
9
if before.name != after.name:
10
embed.add_field(name="Previous name",value=before.name,inline=False)
11
embed.add_field(name="New name ",value=after.name,inline=False)
12
if before.status != after.status:
13
embed.add_field(name="Previous Status",value=before.status,inline=False)
14
embed.add_field(name="New Status ",value=after.status,inline=False)
15
await logs.send(embed=embed)
16
This code is for logs so I want it to have different logs for each server. For example, I don’t want to show a server that I’m not in if I changed avatar or anything. Any help is appreciated
Advertisement
Answer
You can simply check if you have any mutual guilds with the user that updated it’s info
JavaScript
1
25
25
1
@commands.Cog.listener()
2
async def on_user_update(self, before, after):
3
my_id = YOUR_ID_HERE # Obviously put your ID here
4
mutual_guilds = [g for g in self.bot.guilds if g.get_member(my_id) and g.get_member(after.id)]
5
6
if mutual_guilds: # Checking if the list is not empty
7
# The user is in one of your guilds
8
logs = self.bot.get_channel(810977833823240262)
9
embed = discord.Embed(colour=0x7289da)
10
embed.description = f"{after.name} has changed his avatar"
11
12
if before.avatar_url != after.avatar_url:
13
embed.add_field(name="New avatar")
14
embed.set_image(url=after.avatar_url)
15
16
if before.name != after.name:
17
embed.add_field(name="Previous name",value=before.name,inline=False)
18
embed.add_field(name="New name ",value=after.name,inline=False)
19
20
if before.status != after.status:
21
embed.add_field(name="Previous Status",value=before.status,inline=False)
22
embed.add_field(name="New Status ",value=after.status,inline=False)
23
24
await logs.send(embed=embed)
25
To explain a bit more the list comprehension:
JavaScript
1
6
1
mutual_guilds = []
2
3
for g in self.bot.guilds: # Looping though every guild
4
if g.get_member(my_id) and g.get_member(after.id): # Checking if both you and the user are in the guild
5
mutual_guilds.append(g)
6