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

225 lines
8.2 KiB
Python

# ╔══════════════════════════════════════════════════════════════════╗
# ║ ║
# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║
# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║
# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║
# ║ ║
# ║ © 2026 CodeX Devs — All Rights Reserved ║
# ║ ║
# ║ discord ── https://discord.gg/codexdev ║
# ║ youtube ── https://youtube.com/@CodeXDevs ║
# ║ github ── https://github.com/RayExo ║
# ║ ║
# ╚══════════════════════════════════════════════════════════════════╝
import base64
import binascii
import codecs
import secrets
import discord
from discord.ui import LayoutView, TextDisplay, Separator, Container
from discord.ext import commands
from utils.cv2 import CV2, build_container
class EncryptResultView(LayoutView):
def __init__(self, convert, txtinput):
super().__init__(timeout=None)
try:
display_text = txtinput.decode("UTF-8")
except AttributeError:
display_text = str(txtinput)
if len(display_text) > 500:
display_text = display_text[:500] + "..."
self.add_item(
build_container(
TextDisplay(f"📑 **{convert}**"),
Separator(visible=True),
TextDisplay(display_text),
)
)
class DecodeErrorView(LayoutView):
def __init__(self, codec_name):
super().__init__(timeout=None)
self.add_item(
build_container(
TextDisplay(f"❌ **Invalid {codec_name}**"),
Separator(visible=True),
TextDisplay(f"The provided string is not valid {codec_name} encoding."),
)
)
class PasswordSentView(LayoutView):
def __init__(self, author_name):
super().__init__(timeout=None)
self.add_item(
build_container(
TextDisplay("🔐 **Password Generated**"),
Separator(visible=True),
TextDisplay(
f"Sending you a DM with your random generated password **{author_name}**"
),
)
)
class PasswordDMView(LayoutView):
def __init__(self, password):
super().__init__(timeout=None)
self.add_item(
build_container(
TextDisplay("🎁 **Here is your password:**"),
Separator(visible=True),
TextDisplay(password),
)
)
class encryption(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.group(invoke_without_command=True)
async def encode(self, ctx):
"""All encode methods"""
await ctx.send_help(ctx.command)
@commands.group(invoke_without_command=True)
async def decode(self, ctx):
"""All decode methods"""
await ctx.send_help(ctx.command)
async def encryptout(self, ctx, convert, txtinput):
view = EncryptResultView(convert, txtinput)
await ctx.send(view=view)
@encode.command(name="base32", aliases=["b32"])
async def encode_base32(self, ctx, *, txtinput: commands.clean_content):
"""Encode in base32"""
await self.encryptout(
ctx, "Text -> base32", base64.b32encode(txtinput.encode("UTF-8"))
)
@decode.command(name="base32", aliases=["b32"])
async def decode_base32(self, ctx, *, txtinput: str):
"""Decode in base32"""
try:
await self.encryptout(
ctx, "base32 -> Text", base64.b32decode(txtinput.encode("UTF-8"))
)
except Exception:
await ctx.send(view=DecodeErrorView("base32"))
@encode.command(name="base64", aliases=["b64"])
async def encode_base64(self, ctx, *, txtinput: commands.clean_content):
"""Encode in base64"""
await self.encryptout(
ctx, "Text -> base64", base64.urlsafe_b64encode(txtinput.encode("UTF-8"))
)
@decode.command(name="base64", aliases=["b64"])
async def decode_base64(self, ctx, *, txtinput: str):
"""Decode in base64"""
try:
await self.encryptout(
ctx,
"base64 -> Text",
base64.urlsafe_b64decode(txtinput.encode("UTF-8")),
)
except Exception:
await ctx.send(view=DecodeErrorView("base64"))
@encode.command(name="rot13", aliases=["r13"])
async def encode_rot13(self, ctx, *, txtinput: commands.clean_content):
"""Encode in rot13"""
await self.encryptout(ctx, "Text -> rot13", codecs.decode(txtinput, "rot_13"))
@decode.command(name="rot13", aliases=["r13"])
async def decode_rot13(self, ctx, *, txtinput: str):
"""Decode in rot13"""
try:
await self.encryptout(
ctx, "rot13 -> Text", codecs.decode(txtinput, "rot_13")
)
except Exception:
await ctx.send(view=DecodeErrorView("rot13"))
@encode.command(name="hex")
async def encode_hex(self, ctx, *, txtinput: commands.clean_content):
"""Encode in hex"""
await self.encryptout(
ctx, "Text -> hex", binascii.hexlify(txtinput.encode("UTF-8"))
)
@decode.command(name="hex")
async def decode_hex(self, ctx, *, txtinput: str):
"""Decode in hex"""
try:
await self.encryptout(
ctx, "hex -> Text", binascii.unhexlify(txtinput.encode("UTF-8"))
)
except Exception:
await ctx.send(view=DecodeErrorView("hex"))
@encode.command(name="base85", aliases=["b85"])
async def encode_base85(self, ctx, *, txtinput: commands.clean_content):
"""Encode in base85"""
await self.encryptout(
ctx, "Text -> base85", base64.b85encode(txtinput.encode("UTF-8"))
)
@decode.command(name="base85", aliases=["b85"])
async def decode_base85(self, ctx, *, txtinput: str):
"""Decode in base85"""
try:
await self.encryptout(
ctx, "base85 -> Text", base64.b85decode(txtinput.encode("UTF-8"))
)
except Exception:
await ctx.send(view=DecodeErrorView("base85"))
@encode.command(name="ascii85", aliases=["a85"])
async def encode_ascii85(self, ctx, *, txtinput: commands.clean_content):
"""Encode in ASCII85"""
await self.encryptout(
ctx, "Text -> ASCII85", base64.a85encode(txtinput.encode("UTF-8"))
)
@decode.command(name="ascii85", aliases=["a85"])
async def decode_ascii85(self, ctx, *, txtinput: str):
"""Decode in ASCII85"""
try:
await self.encryptout(
ctx, "ASCII85 -> Text", base64.a85decode(txtinput.encode("UTF-8"))
)
except Exception:
await ctx.send(view=DecodeErrorView("ASCII85"))
@commands.command(name="password")
async def password(self, ctx):
"""Generates a random secure password for you"""
if hasattr(ctx, "guild") and ctx.guild is not None:
await ctx.send(view=PasswordSentView(ctx.author.name))
password = secrets.token_urlsafe(18)
try:
await ctx.author.send(view=PasswordDMView(password))
except discord.Forbidden:
await ctx.send(
f"❌ Could not send DM. Here is your password: **{password}**"
)
async def setup(bot):
await bot.add_cog(encryption(bot))