11import discord
22from discord import app_commands
3- from io import BytesIO
4- import requests
53import urllib
64from urllib import parse
75from settings .settings import SRA_BASE_URL
108class ImageCommands (app_commands .Group ):
119 @app_commands .command (name = "effect" , description = "Apply an effect to the pfp of a user" )
1210 @app_commands .describe (effect = "The desired effect" , member = "The desired user" )
13- @app_commands .choices (effect = [app_commands .Choice (name = "comrade" , value = "comrade" ),
11+ @app_commands .choices (effect = [app_commands .Choice (name = "circle" , value = "circle" ),
12+ app_commands .Choice (name = "comrade" , value = "comrade" ),
1413 app_commands .Choice (name = "gay" , value = "gay" ),
1514 app_commands .Choice (name = "glass" , value = "glass" ),
15+ app_commands .Choice (name = "heart" , value = "heart" ),
1616 app_commands .Choice (name = "horny license" , value = "horny" ),
1717 app_commands .Choice (name = "jail" , value = "jail" ),
1818 app_commands .Choice (name = "lgbt" , value = "lgbt" ),
19+ app_commands .Choice (name = "lied" , value = "lied" ),
1920 app_commands .Choice (name = "lolice" , value = "lolice" ),
2021 app_commands .Choice (name = "mission passed" , value = "passed" ),
2122 app_commands .Choice (name = "simp card" , value = "simpcard" ),
@@ -24,31 +25,36 @@ class ImageCommands(app_commands.Group):
2425 async def effect (self , interaction : discord .Interaction , member : discord .Member ,
2526 effect : discord .app_commands .Choice [str ]):
2627 pfp_url = member .display_avatar
27- # Only triggered is a gif, all others are static images => same code
28- # NEED TO FIX LATER, TRIGGERED SHOULD BE IN EMBED FOR CONSISTENCY
29- if effect .name == "triggered" :
30- try :
31- response = requests .get (f"{ SRA_BASE_URL } /canvas/triggered?avatar={ str (pfp_url )} " ).content
32- image_data = BytesIO (response )
33- # embed = discord.Embed(title="✨ ImageEffect: " + effect.name, colour=discord.Colour(0x00ff00),
34- # description=member.mention)
35- # embed.set_image(url="attachment://triggered.gif")
36- # await interaction.response.send_message(embed=embed)
37- await interaction .response .send_message (file = discord .File (image_data , 'triggered.gif' ))
38- except KeyError :
39- # {"error":{"error":"Image given has not completed loading"}}
40- await interaction .response .send_message ("Error making triggered image!" , ephemeral = True )
41- else :
42- try :
43- url = f"{ SRA_BASE_URL } /canvas/{ effect .value } ?avatar={ str (pfp_url )} "
28+
29+ try :
30+ # /canvas/overlay endpoints
31+ if effect .value in ["comrade" , "gay" , "glass" , "jail" , "passed" , "triggered" , "wasted" ]:
32+ url = f"{ SRA_BASE_URL } /canvas/overlay/{ effect .value } ?avatar={ str (pfp_url )} "
33+ embed = discord .Embed (title = "✨ ImageEffect: " + effect .name , colour = discord .Colour (0x00ff00 ),
34+ description = member .mention )
35+ embed .set_image (url = url )
36+ await interaction .response .send_message (embed = embed )
37+
38+ # /canvas/misc endpoints
39+ elif effect .value in ["circle" , "heart" , "horny" , "lgbt" , "lolice" , "simpcard" ]:
40+ url = f"{ SRA_BASE_URL } /canvas/misc/{ effect .value } ?avatar={ str (pfp_url )} "
4441 embed = discord .Embed (title = "✨ ImageEffect: " + effect .name , colour = discord .Colour (0x00ff00 ),
4542 description = member .mention )
4643 embed .set_image (url = url )
4744 await interaction .response .send_message (embed = embed )
48- except KeyError :
49- embed = discord .Embed (title = ":x: Error" , colour = discord .Colour (0xff0000 ),
50- description = "Image could not be created!" )
51- await interaction .response .send_message (embed = embed , ephemeral = True )
45+
46+ elif effect .value == "lied" :
47+ url = f"{ SRA_BASE_URL } /canvas/misc/{ effect .value } ?username={ member .display_name } &avatar={ str (pfp_url )} "
48+ embed = discord .Embed (title = "✨ ImageEffect: " + effect .name , colour = discord .Colour (0x00ff00 ),
49+ description = member .mention )
50+ embed .set_image (url = url )
51+ await interaction .response .send_message (embed = embed )
52+
53+ except KeyError :
54+ embed = discord .Embed (title = ":x: Error" , colour = discord .Colour (0xff0000 ),
55+ description = "Image could not be created!" )
56+ await interaction .response .send_message (embed = embed , ephemeral = True )
57+
5258
5359 @app_commands .command (name = "filter" , description = "Apply a simple filter to the pfp of a user" )
5460 @app_commands .describe (filter = "The desired filter" , member = "The desired user" )
@@ -81,18 +87,36 @@ async def filter(self, interaction: discord.Interaction, member: discord.Member,
8187 @app_commands .command (name = "compose" , description = "Create meme-y images" )
8288 @app_commands .describe (effect = "The desired effect" , member = "The desired user" , text = "The text to put on the image" )
8389 @app_commands .choices (effect = [app_commands .Choice (name = "youtube comment" , value = "youtube-comment" ),
84- app_commands .Choice (name = "twitter post" , value = "tweet" ),])
90+ app_commands .Choice (name = "twitter post" , value = "tweet" ),
91+ app_commands .Choice (name = "oh no it's stupid" , value = "its-so-stupid" )])
8592 async def compose (self , interaction : discord .Interaction , member : discord .Member ,
8693 effect : discord .app_commands .Choice [str ], text : str ):
8794 text = urllib .parse .quote (text )
8895 name = urllib .parse .quote (member .name )
89- displayname = urllib .parse .quote (member .display_name )
90- url = f"{ SRA_BASE_URL } /canvas/misc/{ effect .value } ?avatar={ member .display_avatar } &comment={ text } "
91- f"&username={ name } &displayname={ displayname } "
92- embed = discord .Embed (title = "✨ ImageCompose: " + effect .name , colour = discord .Colour (0x00ff00 ),
93- description = member .mention )
94- embed .set_image (url = url )
95- await interaction .response .send_message (embed = embed )
96+ display_name = urllib .parse .quote (member .display_name )
97+
98+ if effect .value == "youtube-comment" :
99+ url = (f"{ SRA_BASE_URL } /canvas/misc/{ effect .value } ?username={ name } &comment={ text } "
100+ f"&avatar={ member .display_avatar } " )
101+ embed = discord .Embed (title = "✨ ImageCompose: " + effect .name , colour = discord .Colour (0x00ff00 ),
102+ description = member .mention )
103+ embed .set_image (url = url )
104+ await interaction .response .send_message (embed = embed )
105+
106+ elif effect .value == "tweet" :
107+ url = (f"{ SRA_BASE_URL } /canvas/misc/{ effect .value } ?username={ name } &displayname={ display_name } "
108+ f"&comment={ text } &avatar={ member .display_avatar } " )
109+ embed = discord .Embed (title = "✨ ImageCompose: " + effect .name , colour = discord .Colour (0x00ff00 ),
110+ description = member .mention )
111+ embed .set_image (url = url )
112+ await interaction .response .send_message (embed = embed )
113+
114+ elif effect .value == "its-so-stupid" :
115+ url = f"{ SRA_BASE_URL } /canvas/misc/{ effect .value } ?dog={ text } &avatar={ member .display_avatar } "
116+ embed = discord .Embed (title = "✨ ImageCompose: " + effect .name , colour = discord .Colour (0x00ff00 ),
117+ description = member .mention )
118+ embed .set_image (url = url )
119+ await interaction .response .send_message (embed = embed )
96120
97121
98122async def setup (bot ):
0 commit comments