Files
Mace-AIO-Discord-Bot---With…/bot/cogs/events/on_guild.py
2026-07-16 11:14:48 +05:30

220 lines
8.7 KiB
Python

# ╔══════════════════════════════════════════════════════════════════╗
# ║ ║
# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║
# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║
# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║
# ║ ║
# ║ © 2026 CodeX Devs — All Rights Reserved ║
# ║ ║
# ║ discord ── https://discord.gg/codexdev ║
# ║ youtube ── https://youtube.com/@CodeXDevs ║
# ║ github ── https://github.com/RayExo ║
# ║ ║
# ╚══════════════════════════════════════════════════════════════════╝
from discord.ext import commands
from core import zyrox, Cog
import discord
from utils.emoji import ARROWRED, KING, ZBOT, ZHUMAN, ZROCKET
import logging
from discord.ui import View, Button, Select
from utils.config import *
logging.basicConfig(
level=logging.INFO,
format="\x1b[38;5;197m[\x1b[0m%(asctime)s\x1b[38;5;197m]\x1b[0m -> \x1b[38;5;197m%(message)s\x1b[0m",
datefmt="%H:%M:%S",
)
client = zyrox()
class Guild(Cog):
def __init__(self, client: zyrox):
self.client = client
self.recently_removed_guilds = set()
self._removal_timestamps = {}
@client.event
@commands.Cog.listener(name="on_guild_join")
async def on_guild_add(self, guild):
try:
rope = [
inv
for inv in await guild.invites()
if inv.max_age == 0 and inv.max_uses == 0
]
ch = 1396794297386532978
me = self.client.get_channel(ch)
if me is None:
logging.error(f"Channel with ID {ch} not found.")
return
channels = len(set(self.client.get_all_channels()))
embed = discord.Embed(title=f"{guild.name}'s Information", color=0xFF0000)
embed.set_author(name="Guild Joined")
embed.set_footer(text=f"Added in {guild.name}")
embed.add_field(
name="**__About__**",
value=f"**Name : ** {guild.name}\n**ID :** {guild.id}\n**Owner {KING} :** {guild.owner} (<@{guild.owner_id}>)\n**Created At : **{guild.created_at.month}/{guild.created_at.day}/{guild.created_at.year}\n**Members :** {len(guild.members)}",
inline=False,
)
embed.add_field(
name="**__Description__**",
value=f"""{guild.description}""",
inline=False,
)
embed.add_field(
name="**__Members__**",
value=f"""{ZROCKET} Members : {len(guild.members)}\n {ZHUMAN} Humans : {len(list(filter(lambda m: not m.bot, guild.members)))}\n {ZBOT} Bots : {len(list(filter(lambda m: m.bot, guild.members)))}
""",
inline=False,
)
embed.add_field(
name="**__Channels__**",
value=f"""
Categories : {len(guild.categories)}
Text Channels : {len(guild.text_channels)}
Voice Channels : {len(guild.voice_channels)}
Threads : {len(guild.threads)}
""",
inline=False,
)
embed.add_field(
name="__Bot Stats:__",
value=f"Servers: `{len(self.client.guilds)}`\nUsers: `{len(self.client.users)}`\nChannels: `{channels}`",
inline=False,
)
if guild.icon is not None:
embed.set_thumbnail(url=guild.icon.url)
embed.timestamp = discord.utils.utcnow()
await me.send(
f"{rope[0]}" if rope else "No Pre-Made Invite Found", embed=embed
)
if not guild.chunked:
await guild.chunk()
embed = discord.Embed(
description=f"{ARROWRED} Prefix For This Server is `>`\n{ARROWRED} Get Started with `>help`\n{ARROWRED} For detailed guides, FAQ & information, visit our **[Support Server](https://discord.gg/codexdev)**",
color=0xFF0000,
)
embed.set_author(
name="Thanks for adding me!", icon_url=guild.me.display_avatar.url
)
embed.set_footer(
text=f"Powered by {BRAND_NAME}",
)
if guild.icon:
embed.set_thumbnail(url=guild.icon.url)
support = Button(
label="Support",
style=discord.ButtonStyle.link,
url=f"https://discord.gg/codexdev",
)
view = View()
view.add_item(support)
channel = discord.utils.get(guild.text_channels, name="general")
if not channel:
channels = [
channel
for channel in guild.text_channels
if channel.permissions_for(guild.me).send_messages
]
if channels:
channel = channels[0]
else:
logging.error(
f"No channel found with send permissions in guild: {guild.name}"
)
return
await channel.send(embed=embed, view=view)
except Exception as e:
logging.error(f"Error in on_guild_join: {e}")
@client.event
@commands.Cog.listener(name="on_guild_remove")
async def on_guild_remove(self, guild):
import time
current_time = time.time()
if guild.id in self.recently_removed_guilds:
last_removal = self._removal_timestamps.get(guild.id, 0)
if current_time - last_removal < 60:
return
self.recently_removed_guilds.add(guild.id)
self._removal_timestamps[guild.id] = current_time
if len(self.recently_removed_guilds) > 100:
self.recently_removed_guilds.clear()
try:
ch = 1396794297386532978
idk = self.client.get_channel(ch)
if idk is None:
logging.error(f"Channel with ID {ch} not found.")
return
channels = len(set(self.client.get_all_channels()))
embed = discord.Embed(title=f"{guild.name}'s Information", color=0xFF0000)
embed.set_author(name="Guild Removed")
embed.set_footer(text=f"{guild.name}")
embed.add_field(
name="**__About__**",
value=f"**Name : ** {guild.name}\n**ID :** {guild.id}\n**Owner {KING} :** {guild.owner} (<@{guild.owner_id}>)\n**Created At : **{guild.created_at.month}/{guild.created_at.day}/{guild.created_at.year}\n**Members :** {len(guild.members)}",
inline=False,
)
embed.add_field(
name="**__Description__**",
value=f"""{guild.description}""",
inline=False,
)
embed.add_field(
name="**__Members__**",
value=f"""
Members : {len(guild.members)}
Humans : {len(list(filter(lambda m: not m.bot, guild.members)))}
Bots : {len(list(filter(lambda m: m.bot, guild.members)))}
""",
inline=False,
)
embed.add_field(
name="**__Channels__**",
value=f"""
Categories : {len(guild.categories)}
Text Channels : {len(guild.text_channels)}
Voice Channels : {len(guild.voice_channels)}
Threads : {len(guild.threads)}
""",
inline=False,
)
embed.add_field(
name="__Bot Stats:__",
value=f"Servers: `{len(self.client.guilds)}`\nUsers: `{len(self.client.users)}`\nChannels: `{channels}`",
inline=False,
)
if guild.icon is not None:
embed.set_thumbnail(url=guild.icon.url)
embed.timestamp = discord.utils.utcnow()
await idk.send(embed=embed)
except Exception as e:
logging.error(f"Error in on_guild_remove: {e}")
# client.add_cog(Guild(client))