logs.py 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. import discord
  2. from discord.ext import commands
  3. from discord.commands import Option
  4. from discord.commands import slash_command
  5. import configparser
  6. import time
  7. class actionlog(commands.Cog):
  8. def __init__(self, bot: discord.Bot):
  9. self.bot = bot
  10. #Delted Message Log
  11. @commands.Cog.listener()
  12. async def on_message_delete(self, message):
  13. config = configparser.ConfigParser()
  14. config.read("config.ini")
  15. enable_log = config.getboolean("Logs","enable_action_log")
  16. if enable_log == "false":
  17. return
  18. log_channel_id = int(config["Logs"]["action_log"])
  19. log_channel = self.bot.get_channel(log_channel_id)
  20. if message.author.bot:
  21. return
  22. else:
  23. embed = discord.Embed(
  24. title="Message Deleted",
  25. description=f"A message by {message.author.mention} was deleted in {message.channel.mention}.",
  26. color=discord.Color.red(),
  27. timestamp=message.created_at
  28. )
  29. embed.add_field(name="Message Content", value=message.content or "No content", inline=False)
  30. embed.set_footer(text=f"User ID: {message.author.id} | Message ID: {message.id}")
  31. await log_channel.send(embed=embed)
  32. #Edited Message Log
  33. @commands.Cog.listener()
  34. async def on_message_edit(self, before, after):
  35. config = configparser.ConfigParser()
  36. config.read("config.ini")
  37. enable_log = config.getboolean("Logs","enable_action_log")
  38. if enable_log == "false":
  39. return
  40. log_channel_id = int(config["Logs"]["action_log"])
  41. log_channel = self.bot.get_channel(log_channel_id)
  42. if before.author.bot:
  43. return
  44. else:
  45. embed = discord.Embed(
  46. title="Message Edited",
  47. description=f"A message by {before.author.mention} was edited in {before.channel.mention}.",
  48. color=discord.Color.orange(),
  49. timestamp=after.edited_at or discord.utils.utcnow()
  50. )
  51. embed.add_field(name="Before", value=before.content or "No content", inline=False)
  52. embed.add_field(name="After", value=after.content or "No content", inline=False)
  53. embed.set_footer(text=f"User ID: {before.author.id} | Message ID: {before.id}")
  54. await log_channel.send(embed=embed)
  55. #Member Join Log
  56. @commands.Cog.listener()
  57. async def on_member_join(self, member):
  58. config = configparser.ConfigParser()
  59. config.read("config.ini")
  60. enable_log = config.getboolean("Logs","enable_action_log")
  61. if enable_log == "false":
  62. return
  63. log_channel_id = int(config["Logs"]["action_log"])
  64. log_channel = self.bot.get_channel(log_channel_id)
  65. embed = discord.Embed(
  66. title="Member Joined",
  67. description=f"{member.mention} has joined the server.",
  68. color=discord.Color.green(),
  69. timestamp=discord.utils.utcnow()
  70. )
  71. embed.set_footer(text=f"User ID: {member.id}")
  72. await log_channel.send(embed=embed)
  73. #Member Leave Log
  74. @commands.Cog.listener()
  75. async def on_member_remove(self, member):
  76. config = configparser.ConfigParser()
  77. config.read("config.ini")
  78. enable_log = config.getboolean("Logs","enable_action_log")
  79. if enable_log == "false":
  80. return
  81. log_channel_id = int(config["Logs"]["action_log"])
  82. log_channel = self.bot.get_channel(log_channel_id)
  83. embed = discord.Embed(
  84. title="Member Left",
  85. description=f"{member.mention} has left the server.",
  86. color=discord.Color.dark_red(),
  87. timestamp=discord.utils.utcnow()
  88. )
  89. embed.set_footer(text=f"User ID: {member.id}")
  90. await log_channel.send(embed=embed)
  91. #Role Update Log
  92. @commands.Cog.listener()
  93. async def on_guild_role_update(self, before, after):
  94. config = configparser.ConfigParser()
  95. config.read("config.ini")
  96. enable_log = config.getboolean("Logs","enable_action_log")
  97. if enable_log == "false":
  98. return
  99. log_channel_id = int(config["Logs"]["action_log"])
  100. log_channel = self.bot.get_channel(log_channel_id)
  101. embed = discord.Embed(
  102. title="Role Updated",
  103. description=f"The role **{before.name}** has been updated.",
  104. color=discord.Color.blue(),
  105. timestamp=discord.utils.utcnow()
  106. )
  107. embed.add_field(name="Before", value=f"Name: {before.name}\nColor: {before.color}\nPermissions: {before.permissions}", inline=False)
  108. embed.add_field(name="After", value=f"Name: {after.name}\nColor: {after.color}\nPermissions: {after.permissions}", inline=False)
  109. embed.set_footer(text=f"Role ID: {before.id}")
  110. await log_channel.send(embed=embed)
  111. #Role added log
  112. @commands.Cog.listener()
  113. async def on_guild_role_create(self, role):
  114. config = configparser.ConfigParser()
  115. config.read("config.ini")
  116. enable_log = config.getboolean("Logs","enable_action_log")
  117. if enable_log == "false":
  118. return
  119. log_channel_id = int(config["Logs"]["action_log"])
  120. log_channel = self.bot.get_channel(log_channel_id)
  121. embed = discord.Embed(
  122. title="Role Created",
  123. description=f"The role **{role.name}** has been created.",
  124. color=discord.Color.green(),
  125. timestamp=discord.utils.utcnow()
  126. )
  127. embed.set_footer(text=f"Role ID: {role.id}")
  128. await log_channel.send(embed=embed)
  129. #Role deleted log
  130. @commands.Cog.listener()
  131. async def on_guild_role_delete(self, role):
  132. config = configparser.ConfigParser()
  133. config.read("config.ini")
  134. enable_log = config.getboolean("Logs","enable_action_log")
  135. if enable_log == "false":
  136. return
  137. log_channel_id = int(config["Logs"]["action_log"])
  138. log_channel = self.bot.get_channel(log_channel_id)
  139. embed = discord.Embed(
  140. title="Role Deleted",
  141. description=f"The role **{role.name}** has been deleted.",
  142. color=discord.Color.red(),
  143. timestamp=discord.utils.utcnow()
  144. )
  145. embed.set_footer(text=f"Role ID: {role.id}")
  146. await log_channel.send(embed=embed)
  147. #User Role update log
  148. @commands.Cog.listener()
  149. async def on_member_update(self, before, after):
  150. config = configparser.ConfigParser()
  151. config.read("config.ini")
  152. enable_log = config.getboolean("Logs","enable_action_log")
  153. if enable_log == "false":
  154. return
  155. log_channel_id = int(config["Logs"]["action_log"])
  156. log_channel = self.bot.get_channel(log_channel_id)
  157. before_roles = set(before.roles)
  158. after_roles = set(after.roles)
  159. added_roles = after_roles - before_roles
  160. removed_roles = before_roles - after_roles
  161. for role in added_roles:
  162. embed = discord.Embed(
  163. title="Role Added",
  164. description=f"The role **{role.name}** has been added to {after.mention}.",
  165. color=discord.Color.green(),
  166. timestamp=discord.utils.utcnow()
  167. )
  168. embed.set_footer(text=f"User ID: {after.id} | Role ID: {role.id}")
  169. await log_channel.send(embed=embed)
  170. for role in removed_roles:
  171. embed = discord.Embed(
  172. title="Role Removed",
  173. description=f"The role **{role.name}** has been removed from {after.mention}.",
  174. color=discord.Color.red(),
  175. timestamp=discord.utils.utcnow()
  176. )
  177. embed.set_footer(text=f"User ID: {after.id} | Role ID: {role.id}")
  178. await log_channel.send(embed=embed)
  179. def setup(bot: discord.Bot):
  180. bot.add_cog(actionlog(bot))