ping_on_einweisung.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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("Einweisung", "enable_channel_ping_on_einweisung")
  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("Einweisung", "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. ping_role_ids = [int(role_id.strip()) for role_id in config.get("Einweisung", "ping_role_id").split(",")]
  27. ping_roles = [self.bot.get_role(role_id) for role_id in ping_role_ids]
  28. if any(role is None for role in ping_roles):
  29. print(f"One or more roles with IDs {ping_role_ids} not found.")
  30. return
  31. if after.channel is not None:
  32. if after.channel.id == channel_ping_id:
  33. ping_message = f"{' '.join(role.mention for role in ping_roles)} {member.mention} ist dem Einweisungskanal beigetreten!"
  34. await channel_ping.send(ping_message)
  35. def setup(bot: discord.Bot):
  36. bot.add_cog(einweisungping(bot))