Files
Syntrel/cogs/botinfo.py

211 lines
8.1 KiB
Python
Raw Normal View History

2025-09-14 18:54:56 -04:00
import platform
import discord
from discord import app_commands
2025-09-14 18:54:56 -04:00
from discord.ext import commands
from discord.ext.commands import Context
2025-10-09 01:00:00 -04:00
from datetime import datetime
import pytz
2025-10-17 01:44:26 -04:00
from utils.contributors import generate_contributors_image
2025-10-09 01:00:00 -04:00
class FeedbackForm(discord.ui.Modal, title="Feedback"):
feedback = discord.ui.TextInput(
label="What do you think about this bot?",
style=discord.TextStyle.long,
placeholder="Type your answer here...",
required=True,
max_length=256,
)
def __init__(self, bot):
super().__init__()
self.bot = bot
async def on_submit(self, interaction: discord.Interaction):
await interaction.response.send_message(
embed=discord.Embed(
title="Thank You!",
description="Your feedback has been submitted, the owners have been notified about it.",
color=0x7289DA,
2025-11-02 23:32:52 -05:00
).set_author(
name="Feedback System",
icon_url="https://yes.nighty.works/raw/gSxqzV.png",
),
2025-10-09 01:00:00 -04:00
ephemeral=True,
)
app_owner = (await self.bot.application_info()).owner
await app_owner.send(
embed=discord.Embed(
title="New Feedback",
description=f"{interaction.user} (<@{interaction.user.id}>) has submitted a new feedback:\n```\n{self.feedback.value}\n```",
color=0x7289DA,
2025-11-02 23:32:52 -05:00
).set_author(
name="Feedback System",
icon_url="https://yes.nighty.works/raw/gSxqzV.png",
)
2025-10-09 01:00:00 -04:00
)
class BotInfoView(discord.ui.View):
def __init__(self, bot):
super().__init__(timeout=None)
self.bot = bot
2025-11-02 23:32:52 -05:00
2025-10-09 01:00:00 -04:00
github_emoji = discord.PartialEmoji(name="githubicon", id=1417717356846776340)
github_button = discord.ui.Button(
label="GitHub",
emoji=github_emoji,
url="https://github.com/neoarz/syntrel",
2025-11-02 23:32:52 -05:00
style=discord.ButtonStyle.link,
2025-10-09 01:00:00 -04:00
)
self.add_item(github_button)
2025-11-02 23:32:52 -05:00
feedback_emoji = discord.PartialEmoji(
name="ThumbsUpBlueEmoji", id=1426066711500554302
)
2025-10-09 01:00:00 -04:00
feedback_button = discord.ui.Button(
label="Feedback",
emoji=feedback_emoji,
style=discord.ButtonStyle.secondary,
2025-11-02 23:32:52 -05:00
custom_id="feedback_button",
2025-10-09 01:00:00 -04:00
)
feedback_button.callback = self.feedback_callback
self.add_item(feedback_button)
2025-11-02 23:32:52 -05:00
2025-10-09 01:00:00 -04:00
bug_emoji = discord.PartialEmoji(name="BugHunterBadge", id=1425703361625460856)
bug_button = discord.ui.Button(
label="Bug Report",
emoji=bug_emoji,
url="https://github.com/neoarz/Syntrel/issues",
2025-11-02 23:32:52 -05:00
style=discord.ButtonStyle.link,
2025-10-09 01:00:00 -04:00
)
self.add_item(bug_button)
2025-11-02 23:32:52 -05:00
2025-10-09 01:00:00 -04:00
async def feedback_callback(self, interaction: discord.Interaction):
feedback_form = FeedbackForm(self.bot)
await interaction.response.send_modal(feedback_form)
class BotInfo(commands.Cog, name="botinfo"):
def __init__(self, bot) -> None:
self.bot = bot
2025-09-14 18:54:56 -04:00
@commands.Cog.listener()
async def on_guild_join(self, guild):
channel = guild.system_channel or next(
2025-11-02 23:32:52 -05:00
(
c
for c in guild.text_channels
if c.permissions_for(guild.me).send_messages
),
None,
)
if channel:
2025-11-02 23:32:52 -05:00
ny_tz = pytz.timezone("America/New_York")
current_time = datetime.now(ny_tz).strftime("%m/%d/%y, %I:%M %p")
2025-11-02 23:32:52 -05:00
description_text = (
2025-11-02 23:32:52 -05:00
'Heyooo! I\'m Syntrel, a bot made to help with [SideStore](https://discord.gg/3DwCwpBHfv), [MeloNX](https://discord.gg/Q4VkbkYfmk), and [idevice](https://discord.gg/ZnNcrRT3M8). I even have some cool extras! If you encounter any issues, please file a bug report. If you have any feedback or suggestions, simply select "Feedback"! <:HeardPanda:1417619745896660992>\n\n'
"**New to Syntrel?** Run `/help` to get started and explore all available commands!\n\n"
f"**Owner:** [neoarz](https://discordapp.com/users/1015372540937502851)\n"
f"**Python Version:** {platform.python_version()}\n"
f"**Discord.py Version:** {discord.__version__}\n"
f"**Prefix:** / (Slash Commands) or {self.bot.bot_prefix} for normal commands"
)
2025-11-02 23:32:52 -05:00
embed = discord.Embed(
title="Syntrel Discord Bot",
description=description_text,
color=0x7289DA,
)
2025-11-02 23:32:52 -05:00
embed.set_author(
name="Syntrel",
icon_url="https://github.com/neoarz/Syntrel/blob/main/assets/icon.png?raw=true",
)
embed.set_image(
url="https://github.com/neoarz/Syntrel/raw/main/assets/bannerdark.png"
)
embed.set_footer(
text=f"neoarz • {current_time}",
icon_url="https://yes.nighty.works/raw/P1Us35.webp",
)
view = BotInfoView(self.bot)
2025-11-02 23:32:52 -05:00
await channel.send(embed=embed, view=view)
else:
self.bot.logger.warning(f"Couldn't find a suitable channel in {guild.name}")
2025-09-14 18:54:56 -04:00
@commands.hybrid_command(
name="botinfo",
description="Get some useful (or not) information about the bot.",
)
@app_commands.allowed_contexts(guilds=True, dms=True, private_channels=True)
@app_commands.allowed_installs(guilds=True, users=True)
async def botinfo(self, context: Context) -> None:
2025-10-17 01:44:26 -04:00
if context.interaction:
await context.interaction.response.defer(ephemeral=False)
2025-11-02 23:32:52 -05:00
ny_tz = pytz.timezone("America/New_York")
current_time = datetime.now(ny_tz).strftime("%m/%d/%y, %I:%M %p")
2025-11-02 23:32:52 -05:00
2025-10-09 01:00:00 -04:00
description_text = (
2025-11-02 23:32:52 -05:00
'Heyooo! I\'m Syntrel, a bot made to help with [SideStore](https://discord.gg/3DwCwpBHfv), [MeloNX](https://discord.gg/Q4VkbkYfmk), and [idevice](https://discord.gg/ZnNcrRT3M8). I even have some cool extras! If you encounter any issues, please file a bug report. If you have any feedback or suggestions, simply select "Feedback"! <:HeardPanda:1417619745896660992>\n\n'
"**New to Syntrel?** Run `/help` to get started and explore all available commands!\n\n"
2025-10-09 01:00:00 -04:00
f"**Owner:** [neoarz](https://discordapp.com/users/1015372540937502851)\n"
f"**Python Version:** {platform.python_version()}\n"
f"**Discord.py Version:** {discord.__version__}\n"
2025-10-09 01:00:00 -04:00
f"**Prefix:** / (Slash Commands) or {self.bot.bot_prefix} for normal commands"
)
2025-11-02 23:32:52 -05:00
2025-10-17 01:44:26 -04:00
embed1 = discord.Embed(
title="Syntrel Discord Bot",
2025-10-09 01:00:00 -04:00
description=description_text,
color=0x7289DA,
2025-09-14 18:54:56 -04:00
)
2025-11-02 23:32:52 -05:00
embed1.set_author(
name="Syntrel",
icon_url="https://github.com/neoarz/Syntrel/blob/main/assets/icon.png?raw=true",
)
embed1.set_image(
url="https://github.com/neoarz/Syntrel/raw/main/assets/bannerdark.png"
)
embed1.set_footer(
text=f"neoarz • {current_time}",
icon_url="https://yes.nighty.works/raw/P1Us35.webp",
)
2025-10-17 01:44:26 -04:00
embed2 = discord.Embed(
title="Contributors",
description="Giving credit where it's due! <a:pandasquish:1428617277317709915>",
color=0x7289DA,
)
2025-11-02 23:32:52 -05:00
2025-10-17 01:44:26 -04:00
contributors_image = generate_contributors_image()
2025-11-02 23:32:52 -05:00
2025-10-09 01:00:00 -04:00
view = BotInfoView(self.bot)
2025-11-02 23:32:52 -05:00
2025-10-17 01:44:26 -04:00
if contributors_image:
file = discord.File(contributors_image, filename="contributors.png")
embed2.set_image(url="attachment://contributors.png")
2025-11-02 23:32:52 -05:00
2025-10-17 01:44:26 -04:00
if context.interaction:
2025-11-02 23:32:52 -05:00
await context.interaction.followup.send(
embeds=[embed1, embed2], file=file, view=view
)
2025-10-17 01:44:26 -04:00
else:
await context.send(embeds=[embed1, embed2], file=file, view=view)
else:
2025-10-17 01:44:26 -04:00
if context.interaction:
2025-11-02 23:32:52 -05:00
await context.interaction.followup.send(
embeds=[embed1, embed2], view=view
)
2025-10-17 01:44:26 -04:00
else:
await context.send(embeds=[embed1, embed2], view=view)
async def setup(bot) -> None:
await bot.add_cog(BotInfo(bot))