(function(ne,Ye,r,u,p,G,N,y,e,ye,o,S,I,Je,j,ae){"use strict";constQe=asyncfunction(){constt=await(awaitfetch("https://uselessfacts.jsph.pl/api/v2/facts/random")).json();return{text:t.text,source:t.source,language:t.language}},Ze=asyncfunction(){return{text:(await(awaitfetch("https://dogapi.dog/api/v2/facts?limit=1")).json()).data[0].attributes.body}},et=asyncfunction(){constt=await(awaitfetch("https://catfact.ninja/fact")).json();return{text:t.fact,length:t.length}},tt=asyncfunction(t,n){try{consta=awaitfetch(`https://api.obamabot.me/v2/image/petpet?image=${t.replace("webp","png")}`);if(a.ok){consti=awaita.json();if(i&&i.url)returni}}catch(a){console.warn("[PetPet] Obama API failed, falling back to .ru:",a)}if(n)return{url:`https://ptc.pwn3t.ru/${n}.gif`};thrownewError("All PetPet APIs are down")},nt=asyncfunction(t="gary"){try{switch(t){case"gary":return(await(awaitfetch("https://api.garythe.cat/gary")).json()).url;case"goober":return(await(awaitfetch("https://api.garythe.cat/goober")).json()).url;case"catapi":return(await(awaitfetch("https://api.thecatapi.com/v1/images/search")).json())[0].url;case"minker":return"https://minky.materii.dev/";default:thrownewError("Invalid Gary image source value")}}catch(n){returnconsole.error(`[Gary API] Error fetching image from ${t}:`,n),null}},re=u.findByProps("sendMessage"),ie=function(t){letn=t.text;returnr.storage.factSettings?.includeCitation&&t.source&&(n+=`
Source:${t.source}`),n},at={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,n){try{const a=await et(),i=Date.now().toString();return re.sendMessage(n.channel.id,{content:ie(a)},void 0,{nonce:i}),null}catch(a){return console.error("[CatFact] Error:",a),p.showToast("Failed to fetch cat fact",3e3),null}}},rt={name:"dogfact",displayName:"dogfact",description:"Sends a dog fact.",displayDescription:"Sends a dog fact.",applicationId:"-1",inputType:1,type:1,execute:async function(t,n){try{const a=await Ze(),i=Date.now().toString();return re.sendMessage(n.channel.id,{content:ie(a)},void 0,{nonce:i}),null}catch(a){return console.error("[DogFact] Error:",a),p.showToast("Failed to fetch dog fact",3e3),null}}},it={name:"useless",displayName:"useless",description:"Sends a useless fact.",displayDescription:"Sends a useless fact.",applicationId:"-1",inputType:1,type:1,execute:async function(t,n){try{const a=await Qe(),i=Date.now().toString();return re.sendMessage(n.channel.id,{content:ie(a)},void 0,{nonce:i}),null}catch(a){return console.error("[UselessFact] Error:",a),p.showToast("Failed to fetch useless fact",3e3),null}}},D={CONTENT:"This list is over 2000 characters. Send anyway?",CONFIRM:"Send",CANCEL:"Cancel"},st={DETAILED:"detailed"},se="",z={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."},he={SEMICOL:"; ",NEW_LINE:`
`},ot="Nothing to see here, huh...",me="github.com/fres621/vendetta-plugins",A={ENABLED:"\u2705",DISABLED:"\u274C",SELECTED:"\u2705",NOT_SELECTED:"\u274C"},ct=u.findByProps("sendMessage","receiveMessage"),k=u.findByProps("sendBotMessage"),pe=(function(){try{return u.findByStoreName("UserStore").getCurrentUser()?.premiumType===2?4e3:2e3}catch{return 2e3}})(),Ce=function(t){return Object.keys(t).includes(me)},be=function(t){return Object.values(t).find(function(n){return n.id==me})?.enabled},ve=function(t){return t.find(function(n){return n.name===st.DETAILED})?.value??!1},H=function(t){return!t||!Array.isArray(t)||t.length===0?"Unknown":t.filter(function(n){return n&&(typeof n=="string"||typeof n=="object"&&n.name)}).map(function(n){return typeof n=="string"?n:n.name||"Unknown"}).join(he.SEMICOL)||"Unknown"},Re=function(t){return t.join(he.NEW_LINE).trimEnd()},K=function(t){return Re(t).length},q=async function(t,n){const a=Date.now().toString();await ct.sendMessage(t,{content:Re(n)},void 0,{nonce:a})},Ie=function(t,n){return[`**My${t}List|${n}${t}s**`,se]};async function lt(t,n){try{const a=ve(t),i=r.storage.themeListAlwaysDetailed??!1;if(!G.themes||typeof G.themes!="object"){const g=n.channel.id;return k.sendBotMessage(g,"No themes found or themes not loaded yet."),null}const s=Object.values(G.themes),c=n.channel.id,d=Ie("Theme",Object.keys(G.themes).length);if(s.length)for(const g of s){if(!g||typeof g!="object")continue;const{selected:f,data:h,id:b}=g,w=h?.name||"Unknown Theme",R=h?.description||"No description",E=h?.authors;a||i?d.push(`>**Name**:${w}`,`>**Selected**:${f?A.SELECTED:A.NOT_SELECTED}`,`>**Description**:${R}`,`>**Authors**:${H(E)}`,`>**[Install!](${b||"unknown"})**`,se):d.push(`>${f?A.SELECTED:A.NOT_SELECTED}**${w}**by${H(E)}`)}else d.push(ot);const l=K(d)>pe;if(l&&!Ce(N.plugins))k.sendBotMessage(c,z.SLM_NOT_INSTALLED);else if(l&&!be(N.plugins))k.sendBotMessage(c,z.SLM_NOT_ENABLED);else{if(K(d)>2e3)return y.alerts.showConfirmationAlert({content:D.CONTENT,confirmText:D.CONFIRM,cancelText:D.CANCEL,onConfirm:async function(){return await q(c,d)}});await q(c,d)}}catch(a){return console.error("[ThemeList] Error:",a),null}}async function dt(t,n){try{const a=ve(t),i=r.storage.pluginListAlwaysDetailed??!1,s=n.channel.id;if(!N.plugins||typeof N.plugins!="object")return k.sendBotMessage(s,"No plugins found or plugins not loaded yet."),null;const c=Ie("Plugin",Object.keys(N.plugins).length);for(const l of Object.values(N.plugins)){if(!l||typeof l!="object")continue;const{enabled:g,manifest:f,id:h}=l,b=f?.name||"Unknown Plugin",w=f?.description||"No description",R=f?.authors;a||i?c.push(`>**Name**:${b}`,`>**Status**:${g?A.ENABLED:A.DISABLED}`,`>**Description**:${w}`,`>**Authors**:${H(R)}`,`>**[Install!](${h||"unknown"})**`,se):c.push(`>${g?A.ENABLED:A.DISABLED}**${b}**by${H(R)}`)}const d=K(c)>pe;if(d&&!Ce(N.plugins))k.sendBotMessage(s,z.SLM_NOT_INSTALLED);else if(d&&!be(N.plugins))k.sendBotMessage(s,z.SLM_NOT_ENABLED);else{if(K(c)>2e3)return y.alerts.showConfirmationAlert({content:D.CONTENT,confirmText:D.CONFIRM,cancelText:D.CANCEL,onConfirm:async function(){return await q(s,c)}});await q(s,c)}}catch(a){return console.error("[PluginList] Error:",a),null}}const ut={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:dt,applicationId:"-1",inputType:1,type:1},gt={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:lt,applicationId:"-1",inputT
`)},void 0,{nonce:d}),null}}catch(a){return console.error("[Sysinfo] Error:",a),null}}const Pt={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},...Ae.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:Bt,applicationId:"-1",inputType:1,type:1},Te=u.findByProps("sendMessage","receiveMessage"),xt=u.findByStoreName("SpotifyStore");async function $t(t,n){return r.storage.enabledCommands?.spotifyTrack?X(n,function(a){return`https://open.spotify.com/track/${a.id}`}):null}async function Lt(t,n){return r.storage.enabledCommands?.spotifyAlbum?X(n,function(a){return`https://open.spotify.com/album/${a.album.id}`}):null}async function Mt(t,n){return r.storage.enabledCommands?.spotifyArtists?X(n,function(a){return a.artists.map(function(i){return`[${i.name}](${i.external_urls.spotify})`}).join(`
`)}):null}async function _t(t,n){return r.storage.enabledCommands?.spotifyCover?X(n,function(a){return a.album.image.url}):null}async function X(t,n){try{const a=t.channel.id,i=xt?.getTrack?.();if(!i){const d=Date.now().toString();return Te.sendMessage(a,{content:"You are not listening to any track."},void 0,{nonce:d}),null}const s=n(i),c=Date.now().toString();return Te.sendMessage(a,{content:s},void 0,{nonce:c}),null}catch(a){return console.error("[Spotify Command] Error:",a),null}}const Ft={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:$t},Vt={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:Lt},Ut={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:Mt},Wt={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:_t},Ot=u.findByProps("sendMessage"),Gt={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,n){try{r.storage.garySettings||(r.storage.garySettings={imageSource:"gary"});const a=r.storage.garySettings.imageSource||"gary";console.log(`[GaryCommand]Usingimagesource:${a}`);const i=await nt(a);if(!i)return console.log("[Gary Command] No image URL received"),null;console.log(`[GaryCommand]Sendingimage:${i}`);const s=Date.now().toString();return Ot.sendMessage(n.channel.id,{content:i},void 0,{nonce:s}),{type:4}}catch(a){return console.error("[Gary] Error:",a),null}},applicationId:"-1",inputType:1,type:1},De=u.findByProps("sendMessage","receiveMessage"),jt=u.findByProps("getLastSelectedChannelId"),zt=u.findByProps("createBotMessage"),Ht=u.findByProps("BOT_AVATARS");function Y(t,n,a){const i=t??jt?.getChannelId?.(),s=zt.createBotMessage({channelId:i,content:"",embeds:a});s.author.username="Astolfo",s.author.avatar="Astolfo",Ht.BOT_AVATARS.Astolfo="https://i.pinimg.com/736x/50/77/1f/50771f45b1c015cfbb8b0853ba7b8521.jpg",typeof n=="string"?s.content=n:Object.assign(s,n),De.receiveMessage(i,s)}const Kt={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,n){try{const a=t.find(function(l){return l.name==="nsfw"})?.value;let i=t.find(function(l){return l.name==="sort"})?.value;const s=t.find(function(l){return l.name==="silent"})?.value;if(typeof i>"u"&&(i=r.storage.sortdefs),!["best","hot","new","rising","top","controversial"].includes(i)){Y(n.channel.id,"Incorrect sorting type. Valid options are\n`best`, `hot`, `new`, `rising`, `top`, `controversial`.",[]);return}if(a&&!await new Promise(function(l){y.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 l(!0)},cancelText:"Cancel",onCancel:function(){return l(!1)}})}))return null;let c=await fetch(`https://w
(Youcandisablethischeckinpluginsettings)`,[]);return}a&&(c=await fetch(`https://www.reddit.com/r/femboys/${i}.json?limit=100`).then(function(l){return l.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(l){return l.json()});if(s??!0)Y(n.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 l=Date.now().toString();De.sendMessage(n.channel.id,{content:c?.url_overridden_by_dest??c?.url},void 0,{nonce:l})}}catch(a){console.error("[LoveFemboys] Error:",a),Y(n.channel.id,"ERROR !!!!!!!!!!!! \u{1F62D}\u{1F62D}\u{1F62D} Check debug logs!! \u{1F97A}\u{1F97A}\u{1F97A}",[])}}},qt=u.findByProps("sendMessage"),Xt=u.findByProps("sendBotMessage","sendMessage","receiveMessage"),Yt={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,n){try{const a=t.find(function(f){return f.name==="query"})?.value,i=t.find(function(f){return f.name==="send"})?.value||!1,s=t.find(function(f){return f.name==="ephemeral"})?.value||!1;if(!a){const f="\u274C Query parameter is required!";return s?{type:4,data:{content:f,flags:64}}:(p.showToast(f,o.getAssetIDByName("CircleXIcon")),null)}!s&&!i&&p.showToast(`Looking up IP information for ${a}...`,o.getAssetIDByName("DownloadIcon"));const c=`http://ipwhois.app/json/${encodeURIComponent(a)}?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 l=await d.json();if(!l.success){const f=`\u274C Failed to lookup IP information for: ${a}`;return s?{type:4,data:{content:f,flags:64}}:(p.showToast(f,o.getAssetIDByName("CircleXIcon")),null)}const g=`\`\`\`json
${JSON.stringify(l,null,4)}
\`\`\``;if(s)return{type:4,data:{content:g,flags:64}};if(i){constf=Date.now().toString();returnqt.sendMessage(n.channel.id,{content:g},void0,{nonce:f}),{type:4}}elsereturnXt.sendBotMessage(n.channel.id,g),null}catch(a){console.error("[IP] Command error:",a);consti=`\u274C An error occurred while looking up IP information: ${a.message||"Unknown error"}`;returnt?.find?.(function(s){returns.name==="ephemeral"})?.value??!1?{type:4,data:{content:i,flags:64}}:(p.showToast(i,o.getAssetIDByName("CircleXIcon")),null)}},applicationId:"-1",inputType:1,type:1},Jt=u.findByProps("sendMessage"),Qt=u.findByProps("sendBotMessage","sendMessage","receiveMessage"),Zt=["avatar","classic","cuddle","fox_girl","gecg","holo","kemonomimi","kiss","neko","ngif","smug","spank","tickle","waifu","wallpaper","woof"];asyncfunctionen(t,n){consta=[];for(leti=0;i<n;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&&a.push(c.url)}catch(s){console.error(`[NekosLife] Error fetching image ${i+1}:`,s)}returna}functiontn(t){return!t||typeoft!="string"?!1:Zt.includes(t.toLowerCase().trim())}constnn={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,n){try{console.log("[NekosLife] Command executed with args:",t);consta=t.find(function(h){returnh.name==="category"})?.value,i=t.find(function(h){returnh.name==="limit"})?.value,s=t.find(function(h){returnh.name==="send"})?.value||!1,c=t.find(function(h){returnh.name==="ephemeral"})?.value||!1;if(console.log("[NekosLife] Parsed values:",{categoryInput:a,limitInput:i,shouldSend:s,isEphemeral:c}),!a||typeofa!="string"){consth="\u274C Category is required! Examples: neko, waifu, cuddle, kiss";returnconsole.error("[NekosLife] No category provided"),c?{type:4,data:{content:h,flags:64}}:(p.showToast(h,o.getAssetIDByName("CircleXIcon")),null)}constd=a.toLowerCase().trim();if(!tn(d)){consth=`\u274C Invalid SFW category "${a}". Valid: neko, waifu, cuddle, kiss, holo, etc.`;returnc?{type:4,data:{content:h,flags:64}}:(p.showToast(h,o.getAssetIDByName("CircleXIcon")),null)}letl=1;i!=null&&(l=parseInt(String(i))||1,l=Math.max(1,Math.min(5,l))),console.log("[NekosLife] Processing SFW request:",{category:d,limit:l,shouldSend:s,isEphemeral:c}),c||p.showToast(`Fetching ${l} SFW image(s) from nekos.life...`,o.getAssetIDByName("DownloadIcon"));constg=awaiten(d,l);if(g.length===0){consth="\u274C Failed to fetch images from nekos.life. Try again later!";returnc?{type:4,data:{content:h,flags:64}}:(p.showToast(h,o.getAssetIDByName("CircleXIcon")),null)}constf=g.join(`
`);if(c)return console.log("[NekosLife] Sending ephemeral response"),{type:4,data:{content:f,flags:64}};if(s){console.log("[NekosLife] Sending to chat");const h=Date.now().toString();return Jt.sendMessage(n.channel.id,{content:f},void 0,{nonce:h}),null}else return console.log("[NekosLife] Sending as bot message"),Qt.sendBotMessage(n.channel.id,f),null}catch(a){console.error("[NekosLife] Command error:",a);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}}:(p.showToast(i,o.getAssetIDByName("CircleXIcon")),null)}},applicationId:"-1",inputType:1,type:1},an=u.findByProps("sendBotMessage","sendMessage"),x=u.findByProps("getAllFriendInvites","createFriendInvite","revokeFriendInvites"),rn=u.findByProps("getCurrentUser")?.getCurrentUser;function ke(t,n){const a=Date.now().toString();an.sendMessage(t.channel.id,{content:n},void 0,{nonce:a})}const sn={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,n){try{if(!rn?.().phone)return p.showToast("You need a phone number connected to your account!",o.getAssetIDByName("Small")),null;const a=await x.createFriendInvite({code:null,recipient_phone_number_or_email:null,contact_visibility:0,filter_visibilities:[],filtered_invite_suggestions_index:0});if(a?.code){const i=Math.floor(new Date(a.expires_at).getTime()/1e3),s=`https://discord.gg/${a.code} \xB7 Expires: <t:${i}:R>`;ke(n,s),p.showToast("Friend invite created!",o.getAssetIDByName("Check"))}else throw new Error("No invite code generated");return null}catch(a){return console.error("[FriendInvite] Create error:",a),p.showToast("Error creating friend invite",o.getAssetIDByName("Small")),null}}},on={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,n){try{const a=await x.getAllFriendInvites();if(!a?.length)return p.showToast("No active friend invites found",o.getAssetIDByName("Info")),null;const i=a.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 ke(n,`**Your Active Friend Invites:**
`)}`),null}catch(a){returnconsole.error("[FriendInvite] View error:",a),p.showToast("Error viewing friend invites",o.getAssetIDByName("Small")),null}}},cn={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,n){try{consta=awaitx.getAllFriendInvites();if(!a?.length)returnp.showToast("No active friend invites to revoke",o.getAssetIDByName("Info")),null;awaitx.revokeFriendInvites();consti=awaitx.getAllFriendInvites();returni.length===0?p.showToast(`Successfully revoked all ${a.length} friend invite(s)!`,o.getAssetIDByName("Check")):p.showToast(`\u26A0\uFE0F Partially revoked invites. ${i.length} invite(s) remain active.`,o.getAssetIDByName("Warning")),null}catch(a){returnconsole.error("[FriendInvite] Revoke error:",a),p.showToast("Error revoking friend invites",o.getAssetIDByName("Small")),null}}};functionln(t,n){if(!(tinstanceofn))thrownewTypeError("Cannot call a class as a function")}functiondn(t,n){for(vara=0;a<n.length;a++){vari=n[a];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"ini&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}functionun(t,n,a){returnn&&dn(t.prototype,n),t}u.find(function(t){returnt?.WebView&&!t.default}).WebView,u.findByProps("SvgXml"),u.findByProps("useSharedValue"),u.findByProps("FlashList").FlashList,u.findByProps("isJoi"),u.findByProps("create","useStore")||u.findByName("create"),u.findByProps("createJSONStorage","persist"),u.findByProps("pickSingle","isCancel"),u.findByProps("pick","saveDocuments");constgn=u.findByProps("MobileAudioSound").MobileAudioSound;(function(){functiont(n,a,i,s){ln(this,t),this.url=n,this.usage=a,this.volume=i,this.mas=newgn(n,{media:"vibing_wumpus",notification:"activity_launch",ring_tone:"call_ringing",voice:"mute"}[a],i,"default"),this.mas.volume=i,this._preloadSound();for(const[c,d]ofObject.entries(s??{}))this[c]=d}returnun(t,[{key:"ensureSoundGetter",get:function(){returnthis.mas?._ensureSound||this.mas?.ensureSound}},{key:"_preloadSound",value:asyncfunction(n){const{_duration:a}=awaitthis.ensureSoundGetter.bind(this.mas)();returnthis.duration=e.ReactNative.Platform.select({ios:a&&a*1e3,default:a}),this.isLoaded=!!a,n||this.onLoad?.(!!a),!!a}},{key:"play",value:asyncfunction(){varn=this;!this.isLoaded&&this.isLoaded!==!1&&awaitthis._preloadSound(),this.isLoaded&&(this.mas.volume=this.volume,awaitthis.mas.play(),this.isPlaying=!0,this.onPlay?.(),clearTimeout(this._playTimeout),this._playTimeout=setTimeout(function(){returnn.onEnd?.(),n.stop()},this.duration))}},{key:"stop",value:asyncfunction(){this.isLoaded&&(this.mas.stop(),this.isPlaying=!1,this.onStop?.(),clearTimeout(this._playTimeout),awaitthis._preloadSound(!0))}}]),t})();constBe=window.nativeModuleProxy;functionoe(...t){for(constnoft){if(globalThis.__turboModuleProxy){consta=globalThis.__turboModuleProxy(n);if(a)returna}if(Be[n])returnBe[n]}}oe("NativeCacheModule","MMKVManager"),oe("NativeChatModule","DCDChatManager"),oe("NativeFileModule","DCDFileManager");constfn=u.findByStoreName("ThemeStore"),{triggerHaptic:zn}=u.findByProps("triggerHaptic"),Pe=u.findByProps("colors","unsafe_rawColors"),yn=Pe?.internal??Pe?.meta,{useThemeContext:Hn}=u.findByProps("useThemeContext"),hn=u.findByProps("TextStyleSheet").TextStyleSheet;u.findByProps("Navigator")?.Navigator,u.findByProps("getHeaderCloseButton")?.getHeaderCloseButton;const{popModal:Kn,pushModal:qn}=u.findByProps("popModal","pushModal");functionmn(t,n=fn.theme){returnt&&yn?.resolveSemanticColor(n,t)||"#000000"}const{useThemeContext:pn}=u.findByProps("useThemeContext");functionxe({variant:t,lineClamp:n,color:a,align:i,style:s,onPress:c,getChildren:d,children:l,liveUpdate:g,ellipsis:f}){consth=pn(),[b,w]=e.React.useReducer(function(R){return~R},0);returne.React.useEffect(function(){if(!g)return;constR=function(){returnDate.now()-newDate().setMilliseconds(1e3)};letE=setTimeout(functionB(){w(),E=setTimeout(B,R())},R());returnfunc
`,"All categories are Safe For Work (SFW).")),e.React.createElement(m,{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")),a.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"))))})))}const{FormSwitchRow:$e,FormRow:F}=I.Forms;function En(){S.useProxy(r.storage);const[,t]=e.React.useReducer(function(a){return a+1},0),n=e.NavigationNative.useNavigation();return e.React.createElement(e.ReactNative.ScrollView,{style:{flex:1,backgroundColor:y.semanticColors.BACKGROUND_PRIMARY},contentContainerStyle:{flexGrow:1,paddingVertical:16,maxWidth:"100%"}},e.React.createElement(m,{title:"IP Commands",icon:o.getAssetIDByName("GlobeEarthIcon")},e.React.createElement($e,{label:"/ip",subLabel:"Get your current IP address",leading:e.React.createElement(F.Icon,{source:o.getAssetIDByName("GlobeEarthIcon")}),value:r.storage.enabledCommands.ip,onValueChange:function(a){r.storage.enabledCommands.ip=a,r.storage.pendingRestart=!0,t()}})),e.React.createElement(m,{title:"NekosLife Commands",icon:o.getAssetIDByName("ImageIcon")},e.React.createElement($e,{label:"/nekoslife",subLabel:"Get images/gifs from nekos.life",leading:e.React.createElement(F.Icon,{source:o.getAssetIDByName("ImageIcon")}),value:r.storage.enabledCommands.nekoslife,onValueChange:function(a){r.storage.enabledCommands.nekoslife=a,r.storage.pendingRestart=!0,t()}}),e.React.createElement(F,{label:"View Categories",subLabel:"See all 16 available categories",leading:e.React.createElement(F.Icon,{source:o.getAssetIDByName("BookOpenIcon")}),trailing:e.React.createElement(F.Arrow,null),onPress:function(){return n.push("VendettaCustomPage",{title:"NekosLife Categories",render:Sn})}})),e.React.createElement(e.ReactNative.View,{style:{height:32}}))}const{FormSwitchRow:V,FormRow:Le}=I.Forms;function Nn(){S.useProxy(r.storage);const[,t]=e.React.useReducer(function(n){return n+1},0);return e.React.createElement(e.ReactNative.ScrollView,{style:{flex:1,backgroundColor:y.semanticColors.BACKGROUND_PRIMARY},contentContainerStyle:{flexGrow:1,paddingVertical:16,maxWidth:"100%"}},e.React.createElement(m,{title:"Message Commands",icon:o.getAssetIDByName("ChatIcon")},e.React.createElement(V,{label:"/firstmessage",subLabel:"Get the first message in a channel",leading:e.React.createElement(Le.Icon,{source:o.getAssetIDByName("ChatIcon")}),value:r.storage.enabledCommands.firstmessage,onValueChange:function(n){r.storage.enabledCommands.firstmessage=n,r.storage.pendingRestart=!0,t()}})),e.React.createElement(m,{title:"System Commands",icon:o.getAssetIDByName("SettingsIcon")},e.React.createElement(V,{label:"/sysinfo",subLabel:"Display system information",leading:e.React.createElement(Le.Icon,{source:o.getAssetIDByName("SettingsIcon")}),value:r.storage.enabledCommands.sysinfo,onValueChange:function(n){r.storage.enabledCommands.sysinfo=n,r.storage.pendingRestart=!0,t()}})),e.React.createElement(m,{title:"Friend Invites",icon:o.getAssetIDByName("UserAddIcon")},e.React.createElement(V,{label:"/invite create",subLabel:"Generate a friend invite link",value:r.storage.enabledCommands.friendInviteCreate,onValueChange:function(n){r.storage.enabledCommands.friendInviteCreate=n,r.storage.pendingRestart=!0,t()}}),e.React.createElement(V,{label:"/view invites",subLabel:"View your current friend invites",value:r.storage.enabledCommands.friendInviteView,onValueChange:function(n){r.storage.enabledC
`,"Tap any developer to visit their GitHub profile.")),n.map(function(l){return e.React.createElement(e.ReactNative.View,{key:l.github,style:t.groupWrapper},e.React.createElement(e.ReactNative.View,{style:t.groupMain},e.React.createElement(e.ReactNative.View,{style:t.rippleContainer},e.React.createElement(e.ReactNative.Pressable,{style:t.cardPressable,onPress:function(){return a(l.github)},android_ripple:{color:y.semanticColors.ANDROID_RIPPLE,borderless:!1,radius:200},accessibilityRole:"button"},e.React.createElement(e.ReactNative.View,{style:t.avatarContainer},e.React.createElement(e.ReactNative.Image,{source:{uri:l.avatar},style:t.avatar})),e.React.createElement(e.ReactNative.View,{style:t.textContainer},e.React.createElement(e.ReactNative.Text,{numberOfLines:1,style:t.commandText},l.command),e.React.createElement(e.ReactNative.Text,{numberOfLines:1,style:t.authorText},"by ",l.author))))))}),e.React.createElement(m,{title:"About",icon:d,padding:!0},e.React.createElement(e.ReactNative.Text,{style:t.versionText},"Commands Plugin Collection",`