Guest User

Untitled

a guest
Mar 29th, 2023
10
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.92 KB | None | 0 0
  1. import disnake
  2. from disnake.ext import commands
  3. from disnake.enums import ButtonStyle
  4. from env import *
  5. from database import *
  6. from datetime import datetime, date
  7. from dateutil import relativedelta
  8. import re
  9. # @todo fix image remove logging
  10.  
  11.  
  12. class log_to_server(commands.Cog):
  13. def __init__(self, bot: commands.Bot):
  14. self.bot = bot
  15.  
  16.  
  17. # Member guild
  18. @commands.Cog.listener()
  19. async def on_member_join(self, member):
  20. print("Welcome! ", member)
  21. await log_to_server.member_guild_embed(self, member, type="joinde de keet!")
  22. await log_to_server.welcome_msg_member(self, member)
  23.  
  24. @commands.Cog.listener()
  25. async def on_member_remove(self, member):
  26. print("Aaaah! er is een member/memberina weg!")
  27. await log_to_server.member_guild_embed(self, member, type="verliet de keet!")
  28.  
  29. @commands.Cog.listener()
  30. async def on_member_ban(self, guild, member):
  31. print(f"Aaaah! User: {member} is gebanned van guild: {guild}.")
  32. await log_to_server.member_guild_embed(self, member, type="is verbannen van deze keet!")
  33.  
  34. @commands.Cog.listener()
  35. async def on_member_unban(self, guild, member):
  36. print(f"Aaaah! User: {member} is gebanned van guild: {guild}.")
  37. await log_to_server.member_guild_embed(self, member, type="is un-banned van deze keet!")
  38.  
  39. @commands.Cog.listener()
  40. async def on_member_update(self, before, after):
  41. if before.nick != after.nick:
  42. name_before = before.nick
  43. name_after = after.nick
  44. await log_to_server.user_name_change(self, name_before, name_after)
  45.  
  46.  
  47. # Voice
  48. @commands.Cog.listener()
  49. async def on_voice_state_update(self, member, before, after):
  50. # member joins voice
  51. if before.channel is None and after.channel is not None:
  52. await log_to_server.log_voice_state(self, member, vc_channel=after.channel, type="Joinde")
  53. # Member leaves voice
  54. elif after.channel is None and before.channel is not None:
  55. await log_to_server.log_voice_state(self, member, vc_channel=before.channel, type="Verliet")
  56. # Member switches voice channels
  57. elif before.channel != after.channel:
  58. await log_to_server.log_voice_state(self, member, vc_channel=after.channel, type="Veranderde")
  59.  
  60.  
  61. # Messages in guild
  62. @commands.Cog.listener()
  63. async def on_message_delete(self, payload):
  64. print(payload)
  65. await log_to_server.message_deleted(self, payload, message=payload.content, channel=payload.channel)
  66.  
  67. @commands.Cog.listener()
  68. async def on_raw_bulk_message_delete(self, messages):
  69. bulk_deleted_count = len(messages.message_ids)
  70. bulk_deleted_channel = messages.channel_id
  71. await log_to_server.message_bulk_deleted(self, count=bulk_deleted_count, channel=bulk_deleted_channel)
  72.  
  73. @commands.Cog.listener()
  74. async def on_message_edit(self, before, after):
  75. channel = after.channel.mention
  76. author = before.author
  77. if before.clean_content != after.clean_content:
  78. before_content = before.clean_content
  79. after_content = after.clean_content
  80. await log_to_server.message_edited(self, before_content, after_content, channel, author)
  81.  
  82. @commands.Cog.listener()
  83. async def on_audit_log_entry_create(self, audit_entry):
  84. if "AuditLogAction.message_delete" in str(audit_entry):
  85. async for entry in audit_entry.guild.audit_logs(limit=1,action=disnake.AuditLogAction.message_delete):
  86. deleter = entry.user
  87. print(f"{deleter} deleted message by {audit_entry}")
  88.  
  89.  
  90.  
  91. # Changes in guild and roles
  92. @commands.Cog.listener()
  93. async def on_guild_role_create(self, role):
  94. await log_to_server.new_or_deleted_role(self, role, type="aangemaakt")
  95.  
  96. @commands.Cog.listener()
  97. async def on_guild_role_delete(self, role):
  98. await log_to_server.new_or_deleted_role(self, role, type="verwijderd")
  99.  
  100. @commands.Cog.listener()
  101. async def on_guild_role_update(self, before, after):
  102. if before.name != after.name:
  103. await log_to_server.edited_role(self, before, after)
  104.  
  105. elif before.color != after.color:
  106. await log_to_server.color_change_role(self, before, after)
  107.  
  108.  
  109.  
  110. # Channels
  111. @commands.Cog.listener()
  112. async def on_guild_channel_create(self, channel):
  113. await log_to_server.channel_change(self, channel, type="Nieuw kanaal")
  114.  
  115. @commands.Cog.listener()
  116. async def on_guild_channel_delete(self, channel):
  117. await log_to_server.channel_change(self, channel, type="Kanaal verwijderd")
  118.  
  119. @commands.Cog.listener()
  120. async def on_guild_channel_update(self, before, after):
  121. if before.name != after.name:
  122. await log_to_server.channel_name_change(self, before=before.name, after=after.name)
  123.  
  124.  
  125.  
  126. # LOG EMBEDS functions
  127. async def welcome_msg_member(self, member):
  128.  
  129. channel = self.bot.get_channel(int(env_variable.WELCOME_CHANNEL))
  130. Database.cursor.execute("SELECT content FROM configuration_text WHERE service='welcome_text' LIMIT 1")
  131.  
  132. res = Database.cursor.fetchone()[0]
  133. member_mentiont = member.mention
  134. await channel.send(res.format(member_mentiont))
  135.  
  136.  
  137. async def member_guild_embed(self, member, type):
  138.  
  139. date_created_at = str(member.created_at).split(" ")[0]
  140. x = date_created_at.split("-")
  141.  
  142. # get two dates
  143. d1 = f'{x[2]}/{x[1]}/{x[0]}'
  144. d2 = datetime.today().strftime('%d/%m/%Y')
  145.  
  146. start_date = datetime.strptime(d1, "%d/%m/%Y")
  147. end_date = datetime.strptime(d2, "%d/%m/%Y")
  148.  
  149. # Get the relativedelta between two dates
  150. delta = relativedelta.relativedelta(end_date, start_date)
  151. if str(delta.years) == "0":
  152. i = f"{delta.months} maanden en {delta.days} dagen"
  153. else:
  154. i = f"{delta.years} jaar, {delta.months} maanden en {delta.days} dagen"
  155.  
  156. embed=disnake.Embed(title="\n", description=f"**{member.mention} {type}**", color=disnake.Color.dark_green())
  157. embed.set_author(name=member, icon_url=member.avatar)
  158. embed.add_field(name="Account leeftijd:", value=str(i), inline=False)
  159. channel_to_send = self.bot.get_channel(env_variable.ADJE_LOG_CHANNEL_ID)
  160. await channel_to_send.send(embed=embed)
  161.  
  162.  
  163.  
  164. # Member username change
  165. async def user_name_change(self, name_before, name_after):
  166.  
  167. embed=disnake.Embed(title=f"Server gebruikersnaam bewerkt", description=f"\n", color=disnake.Color.purple())
  168. embed.add_field(name="Voor het bewerken:", value=str(name_before), inline=False)
  169. embed.add_field(name="Na het bewerken:", value=str(name_after), inline=False)
  170. channel_to_send = self.bot.get_channel(env_variable.ADJE_LOG_CHANNEL_ID)
  171. await channel_to_send.send(embed=embed)
  172.  
  173.  
  174.  
  175. # Voice logging
  176. async def log_voice_state(self, member, vc_channel, type):
  177. embed=disnake.Embed(title=f"\n", description=f"**{member.mention} {type} voice kanaal: #{vc_channel}**", color=disnake.Color.greyple())
  178. embed.set_author(name=member, icon_url=member.avatar)
  179. channel_to_send = self.bot.get_channel(env_variable.ADJE_LOG_CHANNEL_ID)
  180. await channel_to_send.send(embed=embed)
  181.  
  182.  
  183.  
  184. # Message
  185. async def message_deleted(self, payload, message, channel):
  186.  
  187. embed=disnake.Embed(title=f"\n", description=f"{payload.author.mention} verwijderde een bericht in {channel.mention}", color=disnake.Color.purple())
  188. embed.set_author(name=payload.author.name, icon_url=payload.author.avatar)
  189. channel_to_send = self.bot.get_channel(env_variable.ADJE_LOG_CHANNEL_ID)
  190. try:
  191. if payload.attachments[0] != None:
  192. embed.set_image(url=payload.attachments[0].proxy_url)
  193. except Exception as error:
  194. pass
  195. embed.add_field(name="Content:", value=str(payload.clean_content), inline=False)
  196. await channel_to_send.send(embed=embed)
  197.  
  198. async def message_bulk_deleted(self, count, channel):
  199.  
  200. channel_name = (await self.bot.fetch_channel(channel)).mention
  201. embed=disnake.Embed(title=f"\n", description=f"**Bulk berichten verwijderd in {channel_name} - Aantal: {count}**", color=disnake.Color.purple())
  202. channel_to_send = self.bot.get_channel(env_variable.ADJE_LOG_CHANNEL_ID)
  203. await channel_to_send.send(embed=embed)
  204.  
  205. async def message_edited(self, before_content, after_content, channel, author):
  206. embed=disnake.Embed(title=f"\n", description=f"**Bericht bewerkt in {channel} - Door: {author.mention}**", color=disnake.Color.purple())
  207. embed.set_author(name=author, icon_url=author.avatar)
  208. embed.add_field(name="Voor het bewerken:", value=str(before_content), inline=False)
  209. embed.add_field(name="Na het bewerken:", value=str(after_content), inline=False)
  210. channel_to_send = self.bot.get_channel(env_variable.ADJE_LOG_CHANNEL_ID)
  211. await channel_to_send.send(embed=embed)
  212.  
  213.  
  214.  
  215. # Roles
  216. async def new_or_deleted_role(self, role, type):
  217. embed=disnake.Embed(title=f"Rol {type}: {role}", description="\n", color=disnake.Color.purple())
  218. channel_to_send = self.bot.get_channel(env_variable.ADJE_LOG_CHANNEL_ID)
  219. await channel_to_send.send(embed=embed)
  220.  
  221. async def edited_role(self, before, after):
  222. if str(before) != str(after):
  223. embed=disnake.Embed(title=f"Rol bewerkt", description="\n", color=disnake.Color.purple())
  224. embed.add_field(name="Voor het bewerken:", value=str(before), inline=False)
  225. embed.add_field(name="Na het bewerken:", value=str(after), inline=False)
  226. channel_to_send = self.bot.get_channel(env_variable.ADJE_LOG_CHANNEL_ID)
  227. await channel_to_send.send(embed=embed)
  228. else:
  229. pass
  230.  
  231. async def color_change_role(self, before, after):
  232. embed=disnake.Embed(title=f"Rol {before.name} kleur bewerkt", description="\n", color=disnake.Color.purple())
  233. embed.add_field(name="Voor het bewerken:", value=str(before.color), inline=False)
  234. embed.add_field(name="Na het bewerken:", value=str(after.color), inline=False)
  235. channel_to_send = self.bot.get_channel(env_variable.ADJE_LOG_CHANNEL_ID)
  236. await channel_to_send.send(embed=embed)
  237.  
  238.  
  239.  
  240. # Channels
  241. async def channel_change(self, channel, type="Nieuw kanaal"):
  242. embed=disnake.Embed(title=f"\n", description="**{type} met de naam: #{channel}**", color=disnake.Color.purple())
  243. channel_to_send = self.bot.get_channel(env_variable.ADJE_LOG_CHANNEL_ID)
  244. await channel_to_send.send(embed=embed)
  245.  
  246. async def channel_name_change(self, before, after):
  247. embed=disnake.Embed(title=f"Kanaal bewerkt", description="\n", color=disnake.Color.purple())
  248. embed.add_field(name="Voor het bewerken:", value=str(before), inline=False)
  249. embed.add_field(name="Na het bewerken:", value=str(after), inline=False)
  250. channel_to_send = self.bot.get_channel(env_variable.ADJE_LOG_CHANNEL_ID)
  251. await channel_to_send.send(embed=embed)
  252.  
  253.  
  254. # Logging commands to log channel
  255. def log_commands(self, inter, command, on_user):
  256. embed=disnake.Embed(title=f"Adje log", description="\n", color=disnake.Color.purple())
  257. embed.set_author(name=inter.author, icon_url=inter.author.avatar)
  258. embed.add_field(name="Command:", value=str(command), inline=False)
  259. embed.add_field(name="Op gebruiker:", value=str(on_user), inline=False)
  260. channel_to_send = self.bot.get_channel(env_variable.ADJE_LOG_CHANNEL_ID)
  261. self.bot.loop.create_task(channel_to_send.send(embed=embed))
  262.  
  263.  
  264.  
  265.  
  266. def setup(bot: commands.Bot):
  267. bot.add_cog(log_to_server(bot))
Advertisement
Add Comment
Please, Sign In to add comment