mirror of
https://github.com/neoarz/Syntrel.git
synced 2025-12-25 11:40:12 +01:00
refactor(tweety): too much unecessary code :)
This commit is contained in:
@@ -1,11 +1,8 @@
|
|||||||
import asyncio
|
|
||||||
import os
|
import os
|
||||||
import tempfile
|
import tempfile
|
||||||
import discord
|
import discord
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
from discord import app_commands
|
|
||||||
import aiohttp
|
import aiohttp
|
||||||
import io
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
@@ -102,8 +99,8 @@ class TweetyView(discord.ui.View):
|
|||||||
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
||||||
await interaction.followup.send(embed=embed, ephemeral=True)
|
await interaction.followup.send(embed=embed, ephemeral=True)
|
||||||
|
|
||||||
async def toggle_dark_callback(self, interaction: discord.Interaction):
|
async def _check_author(self, interaction: discord.Interaction) -> bool:
|
||||||
"""Handle dark mode toggle button click"""
|
"""Check if user is authorized to modify the tweet"""
|
||||||
if interaction.user.id != self.author_id:
|
if interaction.user.id != self.author_id:
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
title="Error",
|
title="Error",
|
||||||
@@ -112,28 +109,23 @@ class TweetyView(discord.ui.View):
|
|||||||
)
|
)
|
||||||
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
||||||
await interaction.response.send_message(embed=embed, ephemeral=True)
|
await interaction.response.send_message(embed=embed, ephemeral=True)
|
||||||
return
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
async def toggle_dark_callback(self, interaction: discord.Interaction):
|
||||||
|
"""Handle dark mode toggle button click"""
|
||||||
|
if not await self._check_author(interaction):
|
||||||
|
return
|
||||||
self.is_dark = not self.is_dark
|
self.is_dark = not self.is_dark
|
||||||
self.tweet_data["dark"] = self.is_dark
|
self.tweet_data["dark"] = self.is_dark
|
||||||
|
|
||||||
await self.regenerate_tweet(interaction)
|
await self.regenerate_tweet(interaction)
|
||||||
|
|
||||||
async def toggle_verified_callback(self, interaction: discord.Interaction):
|
async def toggle_verified_callback(self, interaction: discord.Interaction):
|
||||||
"""Handle verified toggle button click"""
|
"""Handle verified toggle button click"""
|
||||||
if interaction.user.id != self.author_id:
|
if not await self._check_author(interaction):
|
||||||
embed = discord.Embed(
|
|
||||||
title="Error",
|
|
||||||
description="You can't modify someone else's tweet!",
|
|
||||||
color=0xE02B2B,
|
|
||||||
)
|
|
||||||
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
|
||||||
await interaction.response.send_message(embed=embed, ephemeral=True)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
self.is_verified = not self.is_verified
|
self.is_verified = not self.is_verified
|
||||||
self.tweet_data["verified"] = self.is_verified
|
self.tweet_data["verified"] = self.is_verified
|
||||||
|
|
||||||
await self.regenerate_tweet(interaction)
|
await self.regenerate_tweet(interaction)
|
||||||
|
|
||||||
async def on_timeout(self):
|
async def on_timeout(self):
|
||||||
@@ -141,11 +133,6 @@ class TweetyView(discord.ui.View):
|
|||||||
for item in self.children:
|
for item in self.children:
|
||||||
item.disabled = True
|
item.disabled = True
|
||||||
|
|
||||||
try:
|
|
||||||
pass
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def tweety_command():
|
def tweety_command():
|
||||||
@commands.hybrid_command(
|
@commands.hybrid_command(
|
||||||
name="tweety",
|
name="tweety",
|
||||||
@@ -153,30 +140,21 @@ def tweety_command():
|
|||||||
)
|
)
|
||||||
@commands.cooldown(1, 10, commands.BucketType.user)
|
@commands.cooldown(1, 10, commands.BucketType.user)
|
||||||
async def tweety(self, context):
|
async def tweety(self, context):
|
||||||
interaction = getattr(context, "interaction", None)
|
# Slash commands show info message only
|
||||||
if interaction is not None:
|
if hasattr(context, "interaction") and context.interaction:
|
||||||
try:
|
embed = discord.Embed(
|
||||||
embed = discord.Embed(
|
title="Tweety",
|
||||||
title="Tweety",
|
description=(
|
||||||
description=(
|
"Use the prefix command: `.media tweety`\n"
|
||||||
"Use the prefix command: `.media tweety`\n"
|
f"Or reply to a message with: <@{self.bot.user.id}> tweety"
|
||||||
f"Or reply to a message with: <@{self.bot.user.id}> tweety"
|
),
|
||||||
),
|
color=0x7289DA,
|
||||||
color=0x7289DA,
|
)
|
||||||
)
|
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
||||||
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
await context.send(embed=embed, ephemeral=True)
|
||||||
if not interaction.response.is_done():
|
|
||||||
await interaction.response.send_message(embed=embed, ephemeral=True)
|
|
||||||
else:
|
|
||||||
await interaction.followup.send(embed=embed, ephemeral=True)
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
return
|
return
|
||||||
|
|
||||||
# Default to light mode, non-verified (buttons will allow toggling)
|
# Check if replying to a message
|
||||||
verified_bool = False
|
|
||||||
theme_bool = False
|
|
||||||
|
|
||||||
if not context.message.reference or not context.message.reference.message_id:
|
if not context.message.reference or not context.message.reference.message_id:
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
title="Error",
|
title="Error",
|
||||||
@@ -184,38 +162,13 @@ def tweety_command():
|
|||||||
color=0xE02B2B,
|
color=0xE02B2B,
|
||||||
)
|
)
|
||||||
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
||||||
|
await context.send(embed=embed)
|
||||||
interaction = getattr(context, "interaction", None)
|
|
||||||
if interaction is not None:
|
|
||||||
if not interaction.response.is_done():
|
|
||||||
await interaction.response.send_message(embed=embed, ephemeral=True)
|
|
||||||
else:
|
|
||||||
await interaction.followup.send(embed=embed, ephemeral=True)
|
|
||||||
else:
|
|
||||||
await context.send(embed=embed, ephemeral=True)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
original_message = await context.channel.fetch_message(context.message.reference.message_id)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if not original_message:
|
original_message = await context.channel.fetch_message(context.message.reference.message_id)
|
||||||
embed = discord.Embed(
|
|
||||||
title="Error",
|
|
||||||
description="Could not find the original message!",
|
|
||||||
color=0xE02B2B,
|
|
||||||
)
|
|
||||||
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
|
||||||
|
|
||||||
interaction = getattr(context, "interaction", None)
|
|
||||||
if interaction is not None:
|
|
||||||
if not interaction.response.is_done():
|
|
||||||
await interaction.response.send_message(embed=embed, ephemeral=True)
|
|
||||||
else:
|
|
||||||
await interaction.followup.send(embed=embed, ephemeral=True)
|
|
||||||
else:
|
|
||||||
await context.send(embed=embed, ephemeral=True)
|
|
||||||
return
|
|
||||||
|
|
||||||
|
# Check if bot message
|
||||||
if original_message.author.bot:
|
if original_message.author.bot:
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
title="Error",
|
title="Error",
|
||||||
@@ -223,32 +176,17 @@ def tweety_command():
|
|||||||
color=0xE02B2B,
|
color=0xE02B2B,
|
||||||
)
|
)
|
||||||
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
||||||
|
await context.send(embed=embed)
|
||||||
interaction = getattr(context, "interaction", None)
|
|
||||||
if interaction is not None:
|
|
||||||
if not interaction.response.is_done():
|
|
||||||
await interaction.response.send_message(embed=embed, ephemeral=True)
|
|
||||||
else:
|
|
||||||
await interaction.followup.send(embed=embed, ephemeral=True)
|
|
||||||
else:
|
|
||||||
await context.send(embed=embed, ephemeral=True)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Show processing message
|
||||||
processing_embed = discord.Embed(
|
processing_embed = discord.Embed(
|
||||||
title="Tweet Generator (Processing)",
|
title="Tweet Generator (Processing)",
|
||||||
description="<a:mariospin:1423677027013103709> Generating tweet... This may take a moment.",
|
description="<a:mariospin:1423677027013103709> Generating tweet... This may take a moment.",
|
||||||
color=0x7289DA,
|
color=0x7289DA,
|
||||||
)
|
)
|
||||||
processing_embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
processing_embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
||||||
|
processing_msg = await context.send(embed=processing_embed)
|
||||||
interaction = getattr(context, "interaction", None)
|
|
||||||
if interaction is not None:
|
|
||||||
if not interaction.response.is_done():
|
|
||||||
await interaction.response.send_message(embed=processing_embed, ephemeral=True)
|
|
||||||
else:
|
|
||||||
await interaction.followup.send(embed=processing_embed, ephemeral=True)
|
|
||||||
else:
|
|
||||||
processing_msg = await context.send(embed=processing_embed)
|
|
||||||
|
|
||||||
author = original_message.author
|
author = original_message.author
|
||||||
display_name = author.display_name or author.name
|
display_name = author.display_name or author.name
|
||||||
@@ -273,36 +211,26 @@ def tweety_command():
|
|||||||
break
|
break
|
||||||
|
|
||||||
if not message_text.strip() and not image_url:
|
if not message_text.strip() and not image_url:
|
||||||
|
await processing_msg.delete()
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
title="Error",
|
title="Error",
|
||||||
description="Message must have either text content or an image/GIF to convert!",
|
description="Message must have either text content or an image/GIF to convert!",
|
||||||
color=0xE02B2B,
|
color=0xE02B2B,
|
||||||
)
|
)
|
||||||
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
||||||
|
await context.send(embed=embed)
|
||||||
interaction = getattr(context, "interaction", None)
|
|
||||||
if interaction is not None:
|
|
||||||
try:
|
|
||||||
await interaction.delete_original_response()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
await interaction.followup.send(embed=embed, ephemeral=True)
|
|
||||||
else:
|
|
||||||
await processing_msg.delete()
|
|
||||||
await context.send(embed=embed, ephemeral=True)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
msg_time = original_message.created_at
|
# Prepare tweet data
|
||||||
timestamp = msg_time.strftime("%I:%M %p · %b %d, %Y").replace(" 0", " ")
|
timestamp = original_message.created_at.strftime("%I:%M %p · %b %d, %Y").replace(" 0", " ")
|
||||||
|
|
||||||
tweet_data = {
|
tweet_data = {
|
||||||
"name": display_name[:50],
|
"name": display_name[:50],
|
||||||
"handle": username[:20],
|
"handle": username[:20],
|
||||||
"text": message_text[:300],
|
"text": message_text[:300],
|
||||||
"avatar": avatar_url,
|
"avatar": avatar_url,
|
||||||
"timestamp": timestamp,
|
"timestamp": timestamp,
|
||||||
"verified": verified_bool,
|
"verified": False,
|
||||||
"dark": theme_bool
|
"dark": False
|
||||||
}
|
}
|
||||||
|
|
||||||
if image_url:
|
if image_url:
|
||||||
@@ -319,6 +247,7 @@ def tweety_command():
|
|||||||
) as response:
|
) as response:
|
||||||
|
|
||||||
if response.status != 200:
|
if response.status != 200:
|
||||||
|
await processing_msg.delete()
|
||||||
error_text = await response.text()
|
error_text = await response.text()
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
title="Error",
|
title="Error",
|
||||||
@@ -326,17 +255,7 @@ def tweety_command():
|
|||||||
color=0xE02B2B,
|
color=0xE02B2B,
|
||||||
)
|
)
|
||||||
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
||||||
|
await context.send(embed=embed)
|
||||||
interaction = getattr(context, "interaction", None)
|
|
||||||
if interaction is not None:
|
|
||||||
try:
|
|
||||||
await interaction.delete_original_response()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
await interaction.followup.send(embed=embed, ephemeral=True)
|
|
||||||
else:
|
|
||||||
await processing_msg.delete()
|
|
||||||
await context.send(embed=embed, ephemeral=True)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
image_data = await response.read()
|
image_data = await response.read()
|
||||||
@@ -345,6 +264,8 @@ def tweety_command():
|
|||||||
temp_file.write(image_data)
|
temp_file.write(image_data)
|
||||||
temp_file_path = temp_file.name
|
temp_file_path = temp_file.name
|
||||||
|
|
||||||
|
await processing_msg.delete()
|
||||||
|
|
||||||
with open(temp_file_path, 'rb') as f:
|
with open(temp_file_path, 'rb') as f:
|
||||||
file = discord.File(f, filename=f"tweet_{author.name}_{int(datetime.now().timestamp())}.png")
|
file = discord.File(f, filename=f"tweet_{author.name}_{int(datetime.now().timestamp())}.png")
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
@@ -364,75 +285,38 @@ def tweety_command():
|
|||||||
api_url=API_BASE_URL
|
api_url=API_BASE_URL
|
||||||
)
|
)
|
||||||
|
|
||||||
interaction = getattr(context, "interaction", None)
|
await context.send(embed=embed)
|
||||||
if interaction is not None:
|
image_message = await context.send(file=file, view=view)
|
||||||
embed_message = await context.channel.send(embed=embed)
|
view.image_message = image_message
|
||||||
image_message = await context.channel.send(file=file, view=view)
|
|
||||||
view.image_message = image_message
|
|
||||||
try:
|
|
||||||
await interaction.delete_original_response()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
await processing_msg.delete()
|
|
||||||
embed_message = await context.channel.send(embed=embed)
|
|
||||||
image_message = await context.channel.send(file=file, view=view)
|
|
||||||
view.image_message = image_message
|
|
||||||
|
|
||||||
os.remove(temp_file_path)
|
os.remove(temp_file_path)
|
||||||
|
|
||||||
except aiohttp.ClientError as e:
|
except aiohttp.ClientError:
|
||||||
|
await processing_msg.delete()
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
title="Error",
|
title="Error",
|
||||||
description=f"Connection error: Could not reach tweet API at {API_BASE_URL}",
|
description=f"Connection error: Could not reach tweet API",
|
||||||
color=0xE02B2B,
|
color=0xE02B2B,
|
||||||
)
|
)
|
||||||
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
||||||
|
await context.send(embed=embed)
|
||||||
interaction = getattr(context, "interaction", None)
|
except Exception:
|
||||||
if interaction is not None:
|
await processing_msg.delete()
|
||||||
try:
|
|
||||||
await interaction.delete_original_response()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
await interaction.followup.send(embed=embed, ephemeral=True)
|
|
||||||
else:
|
|
||||||
await processing_msg.delete()
|
|
||||||
await context.send(embed=embed, ephemeral=True)
|
|
||||||
except Exception as e:
|
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
title="Error",
|
title="Error",
|
||||||
description="Error generating tweet image",
|
description="Error generating tweet image",
|
||||||
color=0xE02B2B,
|
color=0xE02B2B,
|
||||||
)
|
)
|
||||||
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
||||||
|
await context.send(embed=embed)
|
||||||
|
|
||||||
interaction = getattr(context, "interaction", None)
|
except Exception:
|
||||||
if interaction is not None:
|
|
||||||
try:
|
|
||||||
await interaction.delete_original_response()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
await interaction.followup.send(embed=embed, ephemeral=True)
|
|
||||||
else:
|
|
||||||
await processing_msg.delete()
|
|
||||||
await context.send(embed=embed, ephemeral=True)
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
title="Error",
|
title="Error",
|
||||||
description="Error processing the message!",
|
description="Error processing the message!",
|
||||||
color=0xE02B2B,
|
color=0xE02B2B,
|
||||||
)
|
)
|
||||||
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
||||||
|
await context.send(embed=embed)
|
||||||
interaction = getattr(context, "interaction", None)
|
|
||||||
if interaction is not None:
|
|
||||||
if not interaction.response.is_done():
|
|
||||||
await interaction.response.send_message(embed=embed, ephemeral=True)
|
|
||||||
else:
|
|
||||||
await interaction.followup.send(embed=embed, ephemeral=True)
|
|
||||||
else:
|
|
||||||
await context.send(embed=embed, ephemeral=True)
|
|
||||||
|
|
||||||
return tweety
|
return tweety
|
||||||
|
|||||||
Reference in New Issue
Block a user