| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import discord
- from discord.ext import commands
- from discord.commands import Option
- from discord.commands import slash_command
- import configparser
- import time
- import asyncio
- class autodelmsg(commands.Cog):
- def __init__(self, bot: discord.Bot):
- self.bot = bot
-
- def _load_config(self):
- config = configparser.ConfigParser()
- configFilePath = r'config.cfg'
- config.read(configFilePath)
- return config
- def _get_info_channel(self):
- config = self._load_config()
- channel_ids = [int(channel_id.strip()) for channel_id in config.get("Moderation")("autodelete_channel_id").split(",")]
- channels = [self.bot.get_channel(channel_id) for channel_id in channel_ids]
- if any(channel is None for channel in channels):
- print(f"One or more roles with IDs {channel_ids} not found.")
- return
- return channels
- def _get_message_age_limit(self):
- config = self._load_config()
- return config.getint("Moderation", "autodelete_message_age")
-
- @commands.Cog.listener()
- async def on_ready(self):
- channels = self._get_info_channel()
- if channels is None:
- return
- message_age_limit = self._get_message_age_limit()
- while True:
- for channel in channels:
- async for message in channel.history(limit=None):
- if (time.time() - message.created_at.timestamp()) > (message_age_limit * 3600):
- try:
- await message.delete()
- #print(f"Deleted message from {message.author} in {channel.name} due to age.")
- except Exception as e:
- print(f"Failed to delete message: {e}")
- await asyncio.sleep(3600)
|