ping_on_support.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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 einweisungping(commands.Cog):
  8. def __init__(self, bot: discord.Bot):
  9. self.bot = bot
  10. def _load_config(self):
  11. config = configparser.ConfigParser()
  12. configFilePath = r'config.cfg'
  13. config.read(configFilePath)
  14. enable_channel_ping_on_einweisung = config.getboolean("Moderation", "enable_ping_on_support")
  15. if not enable_channel_ping_on_einweisung:
  16. return
  17. return config
  18. @commands.Cog.listener()
  19. async def on_voice_state_update(self, member: discord.Member, before: discord.VoiceState, after: discord.VoiceState):
  20. config = self._load_config()
  21. channel_ping_id = config.getint("Moderation", "support_channel_ping_id")
  22. channel_ping = self.bot.get_channel(channel_ping_id)
  23. if channel_ping is None:
  24. print(f"Channel with ID {channel_ping_id} not found.")
  25. return
  26. channel_join_id = config.getint("Moderation", "support_channel_id")
  27. channel_join = self.bot.get_channel(channel_join_id)
  28. if channel_join is None:
  29. print(f"Channel with ID {channel_join_id} not found.")
  30. return
  31. ping_role_ids = [int(role_id.strip()) for role_id in config.get("Moderation", "support_ping_role_id").split(",")]
  32. ping_roles = [member.guild.get_role(role_id) for role_id in ping_role_ids]
  33. if any(role is None for role in ping_roles):
  34. print(f"One or more roles with IDs {ping_role_ids} not found.")
  35. return
  36. if after.channel is not None:
  37. if after.channel.id == channel_join_id:
  38. ping_message = f"{' '.join(role.mention for role in ping_roles)} {member.mention} ist dem Einweisungskanal beigetreten!"
  39. print(ping_message)
  40. await channel_ping.send(ping_message)
  41. def setup(bot: discord.Bot):
  42. bot.add_cog(einweisungping(bot))