Source:${t.source}`),a},Se={name:"catfact",displayName:"catfact",description:"Sends a random cat fact.",displayDescription:"Sends a random cat fact.",applicationId:"-1",inputType:1,type:1,execute:async function(t,a){try{const n=await Ne(),i=Date.now().toString();return W.sendMessage(a.channel.id,{content:G(n)},void 0,{nonce:i}),{type:4}}catch(n){return console.error("[CatFact] Error:",n),{type:4}}}},Ae={name:"dogfact",displayName:"dogfact",description:"Sends a dog fact.",displayDescription:"Sends a dog fact.",applicationId:"-1",inputType:1,type:1,execute:async function(t,a){try{const n=await Ie(),i=Date.now().toString();return W.sendMessage(a.channel.id,{content:G(n)},void 0,{nonce:i}),{type:4}}catch(n){return console.error("[DogFact] Error:",n),{type:4}}}},Te={name:"useless",displayName:"useless",description:"Sends a useless fact.",displayDescription:"Sends a useless fact.",applicationId:"-1",inputType:1,type:1,execute:async function(t,a){try{const n=await Re(),i=Date.now().toString();return W.sendMessage(a.channel.id,{content:G(n)},void 0,{nonce:i}),{type:4}}catch(n){return console.error("[UselessFact] Error:",n),{type:4}}}},S={CONTENT:"This list is over 2000 characters. Send anyway?",CONFIRM:"Send",CANCEL:"Cancel"},De={DETAILED:"detailed"},H="",$={SLM_NOT_INSTALLED:"This list is over 2000 characters. Install the Split Large Messages plugin to send it.",SLM_NOT_ENABLED:"This list is over 2000 characters. Enable the Split Large Messages plugin to send it."},K={SEMICOL:"; ",NEW_LINE:`
`},ke="Nothing to see here, huh...",z="github.com/fres621/vendetta-plugins",w={ENABLED:"\u2705",DISABLED:"\u274C",SELECTED:"\u2705",NOT_SELECTED:"\u274C"},Be=p.findByProps("sendMessage","receiveMessage"),A=p.findByProps("sendBotMessage"),q=(function(){try{return p.findByStoreName("UserStore").getCurrentUser()?.premiumType===2?4e3:2e3}catch{return 2e3}})(),X=function(t){return Object.keys(t).includes(z)},Y=function(t){return Object.values(t).find(function(a){return a.id==z})?.enabled},J=function(t){return t.find(function(a){return a.name===De.DETAILED})?.value??!1},x=function(t){return!t||!Array.isArray(t)||t.length===0?"Unknown":t.filter(function(a){return a&&(typeof a=="string"||typeof a=="object"&&a.name)}).map(function(a){return typeof a=="string"?a:a.name||"Unknown"}).join(K.SEMICOL)||"Unknown"},Q=function(t){return t.join(K.NEW_LINE).trimEnd()},P=function(t){return Q(t).length},L=async function(t,a){const n=Date.now().toString();await Be.sendMessage(t,{content:Q(a)},void 0,{nonce:n})},Z=function(t,a){return[`**My${t}List|${a}${t}s**`,H]};async function $e(t,a){try{const n=J(t),i=r.storage.themeListAlwaysDetailed??!1;if(!B.themes||typeof B.themes!="object"){const C=a.channel.id;return A.sendBotMessage(C,"No themes found or themes not loaded yet."),{type:4}}const s=Object.values(B.themes),c=a.channel.id,d=Z("Theme",Object.keys(B.themes).length);if(s.length)for(const C of s){if(!C||typeof C!="object")continue;const{selected:y,data:f,id:I}=C,D=f?.name||"Unknown Theme",k=f?.description||"No description",V=f?.authors;n||i?d.push(`>**Name**:${D}`,`>**Selected**:${y?w.SELECTED:w.NOT_SELECTED}`,`>**Description**:${k}`,`>**Authors**:${x(V)}`,`>**[Install!](${I||"unknown"})**`,H):d.push(`>${y?w.SELECTED:w.NOT_SELECTED}**${D}**by${x(V)}`)}else d.push(ke);const u=P(d)>q;if(u&&!X(E.plugins))A.sendBotMessage(c,$.SLM_NOT_INSTALLED);else if(u&&!Y(E.plugins))A.sendBotMessage(c,$.SLM_NOT_ENABLED);else{if(P(d)>2e3)return g.alerts.showConfirmationAlert({content:S.CONTENT,confirmText:S.CONFIRM,cancelText:S.CANCEL,onConfirm:async function(){return await L(c,d)}});await L(c,d)}}catch(n){return console.error("[ThemeList] Error:",n),{type:4}}}async function xe(t,a){try{const n=J(t),i=r.storage.pluginListAlwaysDetailed??!1,s=a.channel.id;if(!E.plugins||typeof E.plugins!="object")return A.sendBotMessage(s,"No plugins found or plugins not loaded yet."),{type:4};const c=Z("Plugin",Object.keys(E.plugins).length);for(const u of Object.values(E.plugins)){if(!u||typeof u!="object")continue;const{enabled:C,manifest:y,id:f}=u,I=y?.name||"Unknown Plugin",D=y?.description||"No description",k=y?.authors;n||i?c.push(`>**Name**:${I}`,`>**Status**:${C?w.ENABLED:w.DISABLED}`,`>**Description**:${D}`,`>**Authors**:${x(k)}`,`>**[Install!](${f||"unknown"})**`,H):c.push(`>${C?w.ENABLED:w.DISABLED}**${I}**by${x(k)}`)}const d=P(c)>q;if(d&&!X(E.plugins))A.sendBotMessage(s,$.SLM_NOT_INSTALLED);else if(d&&!Y(E.plugins))A.sendBotMessage(s,$.SLM_NOT_ENABLED);else{if(P(c)>2e3)return g.alerts.showConfirmationAlert({content:S.CONTENT,confirmText:S.CONFIRM,cancelText:S.CANCEL,onConfirm:async function(){return await L(s,c)}});await L(s,c)}}catch(n){return console.error("[PluginList] Error:",n),{type:4}}}const Pe={name:"plugin-list",displayName:"plugin list",description:"Send your plugin list to the current channel",displayDescription:"Send your plugin list to the current channel",options:[{name:"detailed",description:"Whether to send a list with detailed information.",type:5,required:!1,displayName:"detailed",displayDescription:"Whether to send a list with detailed information."}],execute:xe,applicationId:"-1",inputType:1,type:1},Le={name:"theme-list",displayName:"theme list",description:"Send your theme list to the current channel",displayDescription:"Send your theme list to the current channel",options:[{name:"detailed",description:"Whether to send a list with detailed information.",type:5,required:!1,displayName:"detailed",displayDescription:"Whether to send a list with detailed information."}],execute:$e,applicationId:"-1",inputType:1,type
`)},void 0,{nonce:d}),{type:4}}}catch(n){return console.error("[Sysinfo] Error:",n),{type:4}}}const Ze={name:"sysinfo",displayName:"sysinfo",description:"Display system information",displayDescription:"Display system information",options:[{name:"ephemeral",displayName:"ephemeral",description:"Keep sysinfo ephemeral (default: true)",displayDescription:"Keep sysinfo ephemeral (default: true)",type:5,required:!1},...ie.slice(0,-1).map(function(t){return{name:t,displayName:t,description:`Displaythe${t}section.Setdefaultinsettings.`,displayDescription:`Displaythe${t}section.Setdefaultinsettings.`,type:5,required:!1}})],execute:Qe,applicationId:"-1",inputType:1,type:1},se=p.findByProps("sendMessage","receiveMessage"),et=p.findByStoreName("SpotifyStore");async function tt(t,a){return r.storage.enabledCommands?.spotifyTrack?_(a,function(n){return`https://open.spotify.com/track/${n.id}`}):{type:4}}async function at(t,a){return r.storage.enabledCommands?.spotifyAlbum?_(a,function(n){return`https://open.spotify.com/album/${n.album.id}`}):{type:4}}async function nt(t,a){return r.storage.enabledCommands?.spotifyArtists?_(a,function(n){return n.artists.map(function(i){return`[${i.name}](${i.external_urls.spotify})`}).join(`
`)}):{type:4}}async function rt(t,a){return r.storage.enabledCommands?.spotifyCover?_(a,function(n){return n.album.image.url}):{type:4}}async function _(t,a){try{const n=t.channel.id,i=et?.getTrack?.();if(!i){const d=Date.now().toString();return se.sendMessage(n,{content:"You are not listening to any track."},void 0,{nonce:d}),{type:4}}const s=a(i),c=Date.now().toString();return se.sendMessage(n,{content:s},void 0,{nonce:c}),{type:4}}catch(n){return console.error("[Spotify Command] Error:",n),{type:4}}}const it={name:"spotify track",displayName:"spotify track",description:"Sends your current Spotify track",displayDescription:"Sends your current Spotify track",applicationId:"-1",inputType:1,type:1,execute:tt},st={name:"spotify album",displayName:"spotify album",description:"Sends your current track's album",displayDescription:"Sends your current track's album",applicationId:"-1",inputType:1,type:1,execute:at},ot={name:"spotify artists",displayName:"spotify artists",description:"Sends your current track's artists",displayDescription:"Sends your current track's artists",applicationId:"-1",inputType:1,type:1,execute:nt},ct={name:"spotify cover",displayName:"spotify cover",description:"Sends your current track's cover",displayDescription:"Sends your current track's cover",applicationId:"-1",inputType:1,type:1,execute:rt},lt=p.findByProps("sendMessage"),dt={name:"gary",displayName:"gary",description:"Send a random Gary image to the channel.",displayDescription:"Send a random Gary image to the channel.",options:[],execute:async function(t,a){try{r.storage.garySettings||(r.storage.garySettings={imageSource:"gary"});const n=r.storage.garySettings.imageSource||"gary";console.log(`[GaryCommand]Usingimagesource:${n}`);const i=await we(n);if(!i)return console.log("[Gary Command] No image URL received"),{type:4};console.log(`[GaryCommand]Sendingimage:${i}`);const s=Date.now().toString();return lt.sendMessage(a.channel.id,{content:i},void 0,{nonce:s}),{type:4}}catch(n){return console.error("[Gary] Error:",n),{type:4}}},applicationId:"-1",inputType:1,type:1},oe=p.findByProps("sendMessage","receiveMessage"),ut=p.findByProps("getLastSelectedChannelId"),gt=p.findByProps("createBotMessage"),ft=p.findByProps("BOT_AVATARS");function F(t,a,n){const i=t??ut?.getChannelId?.(),s=gt.createBotMessage({channelId:i,content:"",embeds:n});s.author.username="Astolfo",s.author.avatar="Astolfo",ft.BOT_AVATARS.Astolfo="https://i.pinimg.com/736x/50/77/1f/50771f45b1c015cfbb8b0853ba7b8521.jpg",typeof a=="string"?s.content=a:Object.assign(s,a),oe.receiveMessage(i,s)}const yt={name:"lovefemboys",displayName:"lovefemboys",description:"Get an image of a femboy",displayDescription:"Get an image of a femboy",options:[{name:"nsfw",displayName:"nsfw",description:"Get the result from r/femboys instead of r/femboy (NSFW)",displayDescription:"Get the result from r/femboys instead of r/femboy (NSFW)",required:!1,type:5},{name:"sort",displayName:"sort",description:"Changes the way reddit sorts.",displayDescription:"Changes the way reddit sorts",required:!1,type:3},{name:"silent",displayName:"silent",description:"Makes it so only you can see the message.",displayDescription:"Makes it so only you can see the message.",required:!1,type:5}],applicationId:"-1",inputType:1,type:1,execute:async function(t,a){try{const n=t.find(function(u){return u.name==="nsfw"})?.value;let i=t.find(function(u){return u.name==="sort"})?.value;const s=t.find(function(u){return u.name==="silent"})?.value;if(typeof i>"u"&&(i=r.storage.sortdefs),!["best","hot","new","rising","top","controversial"].includes(i)){F(a.channel.id,"Incorrect sorting type. Valid options are\n`best`, `hot`, `new`, `rising`, `top`, `controversial`.",[]);return}if(n&&!await new Promise(function(u){g.alerts.showConfirmationAlert({title:"\u26A0\uFE0F NSFW Content Warning",content:"This command will send NSFW (Not Safe For Work) content from r/femboys. Are you sure you want to continue?",confirmText:"Yes, Continue",onConfirm:function(){return u(!0)},cancelText:"Cancel",onCancel:function(){return u(!1)}})}))return{type:
(Youcandisablethischeckinpluginsettings)`,[]);return}n&&(c=await fetch(`https://www.reddit.com/r/femboys/${i}.json?limit=100`).then(function(u){return u.json()})),c=c.data?.children?.[Math.floor(Math.random()*c.data?.children?.length)]?.data;const d=await fetch(`https://www.reddit.com/u/${c?.author}/about.json`).then(function(u){return u.json()});if(s??!0)F(a.channel.id,"",[{type:"rich",title:c?.title,url:`https://reddit.com${c?.permalink}`,author:{name:`u/${c?.author} \u2022 r/${c?.subreddit}`,proxy_icon_url:d?.data.icon_img.split("?")[0],icon_url:d?.data.icon_img.split("?")[0]},image:{proxy_url:c?.url_overridden_by_dest?.replace(/.gifv$/g,".gif")??c?.url.replace(/.gifv$/g,".gif"),url:c?.url_overridden_by_dest?.replace(/.gifv$/g,".gif")??c?.url?.replace(/.gifv$/g,".gif"),width:c?.preview?.images?.[0]?.source?.width,height:c?.preview?.images?.[0]?.source?.height},color:"0xf4b8e4"}]);else{const u=Date.now().toString();oe.sendMessage(a.channel.id,{content:c?.url_overridden_by_dest??c?.url},void 0,{nonce:u})}}catch(n){console.error("[LoveFemboys] Error:",n),F(a.channel.id,"ERROR !!!!!!!!!!!! \u{1F62D}\u{1F62D}\u{1F62D} Check debug logs!! \u{1F97A}\u{1F97A}\u{1F97A}",[])}}},mt=p.findByProps("sendMessage"),pt=p.findByProps("sendBotMessage","sendMessage","receiveMessage"),ht={name:"ip",displayName:"ip",description:"IP address and domain lookup",displayDescription:"IP address and domain lookup",options:[{name:"query",displayName:"query",description:"Enter IPv4/IPv6 address or domain name",displayDescription:"Enter IPv4/IPv6 address or domain name",type:3,required:!0},{name:"send",displayName:"send",description:"Send to chat",displayDescription:"Send to chat",type:5,required:!1},{name:"ephemeral",displayName:"ephemeral",description:"Send as ephemeral message (only you can see)",displayDescription:"Send as ephemeral message (only you can see)",type:5,required:!1}],execute:async function(t,a){try{const n=t.find(function(y){return y.name==="query"})?.value,i=t.find(function(y){return y.name==="send"})?.value||!1,s=t.find(function(y){return y.name==="ephemeral"})?.value||!1;if(!n){const y="\u274C Query parameter is required!";return s?{type:4,data:{content:y,flags:64}}:(v.showToast(y,o.getAssetIDByName("CircleXIcon")),{type:4})}!s&&!i&&v.showToast(`Looking up IP information for ${n}...`,o.getAssetIDByName("DownloadIcon"));const c=`http://ipwhois.app/json/${encodeURIComponent(n)}?objects=success,ip,type,as,org,isp,continent,country,country_capital,city,region,country_phone,latitude,longitude,timezone,currency,completed_requests`,d=await fetch(c);if(!d.ok)throw new Error(`HTTP ${d.status}: ${d.statusText}`);const u=await d.json();if(!u.success){const y=`\u274C Failed to lookup IP information for: ${n}`;return s?{type:4,data:{content:y,flags:64}}:(v.showToast(y,o.getAssetIDByName("CircleXIcon")),{type:4})}const C=`\`\`\`json
${JSON.stringify(u,null,4)}
\`\`\``;if(s)return{type:4,data:{content:C,flags:64}};if(i){consty=Date.now().toString();returnmt.sendMessage(a.channel.id,{content:C},void0,{nonce:y}),{type:4}}elsereturnpt.sendBotMessage(a.channel.id,C),{type:4}}catch(n){console.error("[IP] Command error:",n);consti=`\u274C An error occurred while looking up IP information: ${n.message||"Unknown error"}`;returnt?.find?.(function(s){returns.name==="ephemeral"})?.value??!1?{type:4,data:{content:i,flags:64}}:(v.showToast(i,o.getAssetIDByName("CircleXIcon")),{type:4})}},applicationId:"-1",inputType:1,type:1},Ct=p.findByProps("sendMessage"),bt=p.findByProps("sendBotMessage","sendMessage","receiveMessage"),vt=["avatar","classic","cuddle","fox_girl","gecg","holo","kemonomimi","kiss","neko","ngif","smug","spank","tickle","waifu","wallpaper","woof"];asyncfunctionRt(t,a){constn=[];for(leti=0;i<a;i++)try{i>0&&awaitnewPromise(function(d){returnsetTimeout(d,1e3)});consts=awaitfetch(`https://nekos.life/api/v2/img/${t}`);if(!s.ok){console.error(`[NekosLife] API request failed: ${s.status}`);continue}constc=awaits.json();c.url&&n.push(c.url)}catch(s){console.error(`[NekosLife] Error fetching image ${i+1}:`,s)}returnn}functionIt(t){return!t||typeoft!="string"?!1:vt.includes(t.toLowerCase().trim())}constNt={name:"nekoslife",displayName:"nekoslife",description:"Get SFW images/gifs from nekos.life",displayDescription:"Get SFW images/gifs from nekos.life",options:[{name:"category",displayName:"category",description:"Category name (e.g. neko, waifu, cuddle, etc.)",displayDescription:"Category name (e.g. neko, waifu, cuddle, etc.)",type:3,required:!0},{name:"limit",displayName:"limit",description:"Number of images (1-5, default: 1)",displayDescription:"Number of images (1-5, default: 1)",type:4,required:!1},{name:"send",displayName:"send",description:"Send to chat",displayDescription:"Send to chat",type:5,required:!1},{name:"ephemeral",displayName:"ephemeral",description:"Send as ephemeral message (only you can see)",displayDescription:"Send as ephemeral message (only you can see)",type:5,required:!1}],execute:asyncfunction(t,a){try{console.log("[NekosLife] Command executed with args:",t);constn=t.find(function(f){returnf.name==="category"})?.value,i=t.find(function(f){returnf.name==="limit"})?.value,s=t.find(function(f){returnf.name==="send"})?.value||!1,c=t.find(function(f){returnf.name==="ephemeral"})?.value||!1;if(console.log("[NekosLife] Parsed values:",{categoryInput:n,limitInput:i,shouldSend:s,isEphemeral:c}),!n||typeofn!="string"){constf="\u274C Category is required! Examples: neko, waifu, cuddle, kiss";returnconsole.error("[NekosLife] No category provided"),c?{type:4,data:{content:f,flags:64}}:(v.showToast(f,o.getAssetIDByName("CircleXIcon")),{type:4})}constd=n.toLowerCase().trim();if(!It(d)){constf=`\u274C Invalid SFW category "${n}". Valid: neko, waifu, cuddle, kiss, holo, etc.`;returnc?{type:4,data:{content:f,flags:64}}:(v.showToast(f,o.getAssetIDByName("CircleXIcon")),{type:4})}letu=1;i!=null&&(u=parseInt(String(i))||1,u=Math.max(1,Math.min(5,u))),console.log("[NekosLife] Processing SFW request:",{category:d,limit:u,shouldSend:s,isEphemeral:c}),c||v.showToast(`Fetching ${u} SFW image(s) from nekos.life...`,o.getAssetIDByName("DownloadIcon"));constC=awaitRt(d,u);if(C.length===0){constf="\u274C Failed to fetch images from nekos.life. Try again later!";returnc?{type:4,data:{content:f,flags:64}}:(v.showToast(f,o.getAssetIDByName("CircleXIcon")),{type:4})}consty=C.join(`
`);if(c)return console.log("[NekosLife] Sending ephemeral response"),{type:4,data:{content:y,flags:64}};if(s){console.log("[NekosLife] Sending to chat");const f=Date.now().toString();return Ct.sendMessage(a.channel.id,{content:y},void 0,{nonce:f}),{type:4}}else return console.log("[NekosLife] Sending as bot message"),bt.sendBotMessage(a.channel.id,y),{type:4}}catch(n){console.error("[NekosLife] Command error:",n);const i="\u274C An error occurred while fetching images.";return t?.find?.(function(s){return s.name==="ephemeral"})?.value??!1?{type:4,data:{content:i,flags:64}}:(v.showToast(i,o.getAssetIDByName("CircleXIcon")),{type:4})}},applicationId:"-1",inputType:1,type:1},Et=p.findByProps("sendBotMessage","sendMessage"),T=p.findByProps("getAllFriendInvites","createFriendInvite","revokeFriendInvites"),wt=p.findByProps("get","post"),St=p.findByProps("getCurrentUser")?.getCurrentUser,At=p.findByProps("v4")?.v4;function b(t,a){const n=Date.now().toString();Et.sendMessage(t.channel.id,{content:a},void 0,{nonce:n})}const Tt={name:"invite create",displayName:"invite create",description:"Generates a friend invite link.",displayDescription:"Generates a friend invite link.",type:1,applicationId:"-1",inputType:1,execute:async function(t,a){try{if(!St?.().phone)return b(a,"You need to have a phone number connected to your account to create a friend invite!"),{type:4};try{const n=At(),i=await wt.post({url:"/friend-finder/find-friends",body:{modified_contacts:{[n]:[1,"",""]},phone_contact_methods_count:1}});if(i.status===503||i.body?.code===40077)throw new Error("Find Friends temporarily unavailable");const s=i.body?.invite_suggestions?.[0]?.[3];if(!s)throw new Error("No invite code generated");const c=await T.createFriendInvite({code:s,recipient_phone_number_or_email:n,contact_visibility:1,filter_visibilities:[],filtered_invite_suggestions_index:1}),d=Math.floor(new Date(c.expires_at).getTime()/1e3),u=`https://discord.gg/${c.code} \xB7 Expires: <t:${d}:R>`;b(a,u)}catch(n){console.error("[FriendInvite] Primary method failed:",n),b(a,"\u26A0\uFE0F Find Friends is temporarily unavailable. Trying alternative method...");try{const i=await T.createFriendInvite({code:null,recipient_phone_number_or_email:null,contact_visibility:0,filter_visibilities:[],filtered_invite_suggestions_index:0});if(i?.code){const s=Math.floor(new Date(i.expires_at).getTime()/1e3),c=`https://discord.gg/${i.code} \xB7 Expires: <t:${s}:R>`;b(a,`\u2705 Fallback method successful!
${c}`)}else throw new Error("Fallback method also failed")}catch(i){console.error("[FriendInvite] Fallback method failed:",i),b(a,"\u274C Both methods failed. The Find Friends feature is currently unavailable. Please try again later or use Discord's built-in friend invite system.")}}return{type:4}}catch(n){return console.error("[FriendInvite] Create error:",n),n?.body?.code===40077||n?.message?.includes("temporarily unavailable")?b(a,"\u274C The Find Friends feature is temporarily unavailable. Please try again later or use Discord's built-in friend invite system."):b(a,"\u274C Error creating friend invite. Please try again later."),{type:4}}}},Dt={name:"view invites",displayName:"view invites",description:"View your current friend invite links that you've made.",displayDescription:"View your current friend invite links that you've made.",type:1,applicationId:"-1",execute:async function(t,a){try{const n=await T.getAllFriendInvites();if(!n?.length)return b(a,"You have no active friend invites!"),{type:4};const i=n.map(function(s){const c=Math.floor(new Date(s.expires_at).getTime()/1e3);return`_https://discord.gg/${s.code}_ \xB7 Expires: <t:${c}:R> \xB7 Uses: \`${s.uses}/${s.max_uses}\``});return b(a,`**Your Active Friend Invites:**
${i.join(`
`)}`),{type:4}}catch(n){returnconsole.error("[FriendInvite] View error:",n),b(a,"\u274C Error viewing your friend invites. Please try again later."),{type:4}}}},kt={name:"revoke invites",displayName:"revoke invites",description:"Revoke all your friend invite links.",displayDescription:"Revoke all your friend invite links.",type:1,applicationId:"-1",inputType:1,execute:asyncfunction(t,a){try{constn=awaitT.getAllFriendInvites();if(!n?.length)returnb(a,"You have no active friend invites to revoke!"),{type:4};awaitT.revokeFriendInvites();consti=awaitT.getAllFriendInvites();returni.length===0?b(a,`\u2705 Successfully revoked all ${n.length} friend invite(s)!`):b(a,`\u26A0\uFE0F Partially revoked invites. ${i.length} invite(s) remain active.`),{type:4}}catch(n){returnconsole.error("[FriendInvite] Revoke error:",n),b(a,"\u274C Error revoking friend invites. Please try again later."),{type:4}}}};varce,le,de,ue,ge,fe;const{ScrollView:R}=e.ReactNative,{FormRow:l,FormSwitchRow:m}=ve.Forms;(ce=r.storage).factSettings??(ce.factSettings={sendAsReply:!0,includeCitation:!1}),(le=r.storage).listSettings??(le.listSettings={pluginListAlwaysDetailed:!1,themeListAlwaysDetailed:!1}),(de=r.storage).garySettings??(de.garySettings={imageSource:"gary"}),(ue=r.storage).enabledCommands??(ue.enabledCommands={catfact:!0,dogfact:!0,useless:!0,petpet:!0,pluginList:!0,themeList:!0,konoself:!0,konosend:!0,firstmessage:!0,sysinfo:!0,spotifyTrack:!0,spotifyAlbum:!0,spotifyArtists:!0,spotifyCover:!0,gary:!0,ip:!0,lovefemboys:!1,nekoslife:!1,friendInviteCreate:!0,friendInviteView:!0,friendInviteRevoke:!0}),(ge=r.storage).pendingRestart??(ge.pendingRestart=!1),(fe=r.storage).hiddenSettings??(fe.hiddenSettings={enabled:!1,visible:!1,konochanBypassNsfw:!1});functionh({title:t,icon:a,children:n,padding:i=!1}){consts=e.stylesheet.createThemedStyleSheet({main:{backgroundColor:g.semanticColors.CARD_PRIMARY_BG,borderColor:g.semanticColors.BORDER_FAINT,borderWidth:1,borderRadius:16,overflow:"hidden",flex:1},titleContainer:{marginBottom:8,marginHorizontal:0,marginTop:8,gap:4,flexDirection:"row",alignItems:"center"},icon:{width:16,height:16,marginTop:1.5,tintColor:g.semanticColors.TEXT_MUTED},titleText:{fontSize:14,fontWeight:"600",color:g.semanticColors.TEXT_MUTED}});returne.React.createElement(e.ReactNative.View,{style:{marginHorizontal:16,marginTop:16}},t&&e.React.createElement(e.ReactNative.View,{style:s.titleContainer},a&&e.React.createElement(e.ReactNative.Image,{style:s.icon,source:a,resizeMode:"cover"}),e.React.createElement(e.ReactNative.Text,{style:s.titleText},t.toUpperCase())),e.React.createElement(e.ReactNative.View,{style:s.main},i?e.React.createElement(e.ReactNative.View,{style:{paddingHorizontal:16,paddingVertical:16}},n):n))}functionBt({onHiddenUnlock:t}){const[a,n]=e.React.useState(0),[i,s]=e.React.useState(null),c=e.stylesheet.createThemedStyleSheet({container:{flexDirection:"column",alignItems:"center",paddingVertical:24,paddingHorizontal:16},title:{fontSize:28,fontWeight:"700",color:g.semanticColors.TEXT_NORMAL,marginBottom:4},subtitle:{fontSize:16,fontWeight:"500",color:g.semanticColors.TEXT_MUTED},iconContainer:{backgroundColor:g.semanticColors.BACKGROUND_SECONDARY,borderRadius:16,padding:12,marginBottom:16},icon:{width:32,height:32,tintColor:g.semanticColors.TEXT_NORMAL}}),d=function(){if(r.storage.hiddenSettings.enabled){r.storage.hiddenSettings.visible=!r.storage.hiddenSettings.visible,v.showToast(`Hidden settings ${r.storage.hiddenSettings.visible?"visible":"hidden"}`,o.getAssetIDByName("SettingsIcon")),t?.();return}i&&clearTimeout(i);constu=setTimeout(function(){n(0)},1e3);s(u);constC=a+1;n(C),!(C<10)&&(v.showToast("\u{1F513} Hidden settings unlocked!",o.getAssetIDByName("CheckmarkIcon")),r.storage.hiddenSettings.enabled=!0,r.storage.hiddenSettings.visible=!0,n(0),t?.())};returne.React.createElement(e.ReactNative.View,{style:c.container},e.React.createElement(e.ReactNative.Pressable,{style:c.iconContainer,onPress:d},e.React.createElement(e.ReactNative.Image,{source:o.getAssetIDByName("SettingsIcon"),style:c.icon})),e.React
`,"All categories are Safe For Work (SFW).")),e.React.createElement(h,{title:"\u{1F4CB} SFW Categories",icon:o.getAssetIDByName("ListViewIcon")},e.React.createElement(e.ReactNative.View,{style:t.tableHeader},e.React.createElement(e.ReactNative.Text,{style:[t.headerText,t.nameHeader]},"Category Name"),e.React.createElement(e.ReactNative.Text,{style:[t.headerText,t.codeHeader]},"Command Code"),e.React.createElement(e.ReactNative.Text,{style:[t.headerText,t.badgeHeader]},"Type")),n.map(function(i,s){return e.React.createElement(e.ReactNative.View,{key:s,style:t.categoryItem},e.React.createElement(e.ReactNative.Text,{style:t.categoryName},i.name),e.React.createElement(e.ReactNative.Text,{style:t.categoryValue},i.value),e.React.createElement(e.ReactNative.View,{style:t.sfwBadgeContainer},e.React.createElement(e.ReactNative.View,{style:t.sfwBadge},e.React.createElement(e.ReactNative.Text,{style:t.badgeText},"SFW"))))}))))}function xt(){N.useProxy(r.storage);const[,t]=e.React.useReducer(function(n){return n+1},0);e.NavigationNative.useNavigation();const a=e.stylesheet.createThemedStyleSheet({container:{flex:1,backgroundColor:g.semanticColors.BACKGROUND_PRIMARY},warningText:{fontSize:14,color:g.semanticColors.TEXT_DANGER,textAlign:"center",lineHeight:20,fontWeight:"600"},infoText:{fontSize:14,color:g.semanticColors.TEXT_MUTED,textAlign:"center",lineHeight:20,marginTop:8}});return e.React.createElement(R,{style:a.container},e.React.createElement(e.ReactNative.View,{style:{paddingVertical:16}},e.React.createElement(h,{title:"\u26A0\uFE0F Warning",icon:o.getAssetIDByName("WarningIcon"),padding:!0},e.React.createElement(e.ReactNative.Text,{style:a.warningText},"These are hidden commands that may contain mature content or experimental features."),e.React.createElement(e.ReactNative.Text,{style:a.infoText},"Use at your own discretion. Commands in this section are disabled by default.")),e.React.createElement(h,{title:"Hidden Commands",icon:o.getAssetIDByName("EyeIcon")},e.React.createElement(m,{label:"/lovefemboys",subLabel:"Get random femboy images from r/femboys (NSFW content available)",leading:e.React.createElement(l.Icon,{source:o.getAssetIDByName("HeartIcon")}),value:r.storage.enabledCommands.lovefemboys,onValueChange:function(n){r.storage.enabledCommands.lovefemboys=n,r.storage.pendingRestart=!0,t()}})),e.React.createElement(h,{title:"NSFW Bypass Options",icon:o.getAssetIDByName("WarningIcon")},e.React.createElement(m,{label:"KonoChan NSFW Bypass",subLabel:"Allow NSFW KonoChan content in non-NSFW channels (USE WITH CAUTION)",leading:e.React.createElement(l.Icon,{source:o.getAssetIDByName("ShieldIcon")}),value:r.storage.hiddenSettings.konochanBypassNsfw,onValueChange:function(n){n?g.alerts.showConfirmationAlert({title:"\u26A0\uFE0F NSFW Bypass Warning",content:"Enabling this allows NSFW content from KonoChan to be sent in any channel, including non-NSFW channels. This could violate server rules or Discord ToS. Use responsibly!",confirmText:"I Understand",cancelText:"Cancel",onConfirm:function(){r.storage.hiddenSettings.konochanBypassNsfw=!0,t()},onCancel:function(){}}):(r.storage.hiddenSettings.konochanBypassNsfw=!1,t())}})),e.React.createElement(h,{title:"Hidden Settings Control",icon:o.getAssetIDByName("SettingsIcon")},e.React.createElement(m,{label:"Keep Hidden Settings Visible",subLabel:"Keep this section visible even when navigating away",leading:e.React.createElement(l.Icon,{source:o.getAssetIDByName("EyeIcon")}),value:r.storage.hiddenSettings.visible,onValueChange:function(n){r.storage.hiddenSettings.visible=n}}),e.React.createElement(l,{label:"Reset Hidden Settings",subLabel:"Hide this section and disable all hidden commands",leading:e.React.createElement(l.Icon,{source:o.getAssetIDByName("TrashIcon")}),onPress:function(){g.alerts.showConfirmationAlert({title:"Reset Hidden Settings",content:"This will hide the hidden settings section and disable all hidden commands. Are you sure?",confirmText:"Reset",onConfirm:function(){r.storage.hiddenSettings.enabled=!1,r.storage.hiddenSettings.visible=!1,r.storage.hiddenSettings.kon
`,"Tap on any developer to visit their GitHub profile.")),a.map(function(i,s){return e.React.createElement(e.ReactNative.Pressable,{key:s,style:t.creditItem,onPress:function(){return n(i.github)},android_ripple:{color:g.semanticColors.ANDROID_RIPPLE,radius:200}},e.React.createElement(e.ReactNative.Image,{source:{uri:i.avatar},style:t.avatar}),e.React.createElement(e.ReactNative.View,{style:t.textContainer},e.React.createElement(e.ReactNative.Text,{style:t.commandText},i.command),e.React.createElement(e.ReactNative.Text,{style:t.authorText},"by ",i.author),e.React.createElement(e.ReactNative.Text,{style:t.linkText},i.github.replace("https://github.com/","@"))))}),e.React.createElement(h,{title:"About",icon:o.getAssetIDByName("InfoIcon"),padding:!0},e.React.createElement(e.ReactNative.Text,{style:t.versionText},"Commands Plugin Collection",`
`,"Version 1.2.0"))))}function Wt(){N.useProxy(r.storage);const t=e.NavigationNative.useNavigation(),[,a]=e.React.useReducer(function(n){return n+1},0);return e.React.useEffect(function(){return function(){r.storage.pendingRestart&&(r.storage.pendingRestart=!1,g.alerts.showConfirmationAlert({title:"Restart Required",content:"You have made changes to commands. Please restart Discord to apply these changes.",confirmText:"Okay",cancelText:null}))}},[]),e.React.createElement(R,{style:{flex:1,backgroundColor:g.semanticColors.BACKGROUND_PRIMARY}},e.React.createElement(Bt,{onHiddenUnlock:a}),e.React.createElement(h,{title:"Command Categories",icon:o.getAssetIDByName("ChannelListIcon")},e.React.createElement(l,{label:"Facts Commands",subLabel:"Cat facts, dog facts, and useless facts",leading:e.React.createElement(l.Icon,{source:o.getAssetIDByName("BookmarkIcon")}),trailing:e.React.createElement(l.Arrow,null),onPress:function(){return t.push("VendettaCustomPage",{title:"Facts Commands",render:Pt})}}),e.React.createElement(l,{label:"List Commands",subLabel:"Plugin lists and theme lists",leading:e.React.createElement(l.Icon,{source:o.getAssetIDByName("ListViewIcon")}),trailing:e.React.createElement(l.Arrow,null),onPress:function(){return t.push("VendettaCustomPage",{title:"List Commands",render:Mt})}}),e.React.createElement(l,{label:"Image Commands",subLabel:"PetPet, KonoChan, and image utilities",leading:e.React.createElement(l.Icon,{source:o.getAssetIDByName("ImageIcon")}),trailing:e.React.createElement(l.Arrow,null),onPress:function(){return t.push("VendettaCustomPage",{title:"Image Commands",render:_t})}}),e.React.createElement(l,{label:"Gary Commands",subLabel:`Garyimages-Current:${r.storage.garySettings.imageSource==="gary"?"Gary API":r.storage.garySettings.imageSource==="catapi"?"Cat API":r.storage.garySettings.imageSource==="minker"?"Minker API":r.storage.garySettings.imageSource==="goober"?"Goober API":"Gary API"}`,leading:e.React.createElement(l.Icon,{source:o.getAssetIDByName("CameraIcon")}),trailing:e.React.createElement(l.Arrow,null),onPress:function(){return t.push("VendettaCustomPage",{title:"Gary Commands",render:Lt})}}),e.React.createElement(l,{label:"Spotify Commands",subLabel:"Share your Spotify activity",leading:e.React.createElement(l.Icon,{source:o.getAssetIDByName("SpotifyNeutralIcon")}),trailing:e.React.createElement(l.Arrow,null),onPress:function(){return t.push("VendettaCustomPage",{title:"Spotify Commands",render:Ft})}}),e.React.createElement(l,{label:"Aliucord Commands",subLabel:"Commands from Aliucord",leading:e.React.createElement(l.Icon,{source:{uri:"https://avatars.githubusercontent.com/u/78881422?s=200&v=4"}}),trailing:e.React.createElement(l.Arrow,null),onPress:function(){return t.push("VendettaCustomPage",{title:"Aliucord",render:Ut})}}),e.React.createElement(l,{label:"Other Commands",subLabel:"Utility and system commands",leading:e.React.createElement(l.Icon,{source:o.getAssetIDByName("WrenchIcon")}),trailing:e.React.createElement(l.Arrow,null),onPress:function(){return t.push("VendettaCustomPage",{title:"Other Commands",render:Vt})}})),r.storage.hiddenSettings?.visible&&e.React.createElement(h,{title:"\u{1F513} Hidden Settings",icon:o.getAssetIDByName("EyeIcon")},e.React.createElement(l,{label:"Hidden Commands",subLabel:"Access to experimental and NSFW commands",leading:e.React.createElement(l.Icon,{source:o.getAssetIDByName("EyeIcon")}),trailing:e.React.createElement(l.Arrow,null),onPress:function(){return t.push("VendettaCustomPage",{title:"Hidden Settings",render:xt})}})),e.React.createElement(h,{title:"\u{1F3F7}\uFE0F Other",icon:o.getAssetIDByName("InformationIcon")},e.React.createElement(l,{label:"Credits",subLabel:"View original authors of the plugins",leading:e.React.createElement(l.Icon,{source:o.getAssetIDByName("HeartIcon")}),trailing:e.React.createElement(l.Arrow,null),onPress:function(){return t.push("VendettaCustomPage",{title:"Credits",render:Ot})}})),e.React.createElement(e.ReactNative.View,{style:{height:32}}))}r.storage.factSettings||(r.storage.factSettings={sendAsReply:!0