vd-plugins/Commands/index.js

14 lines
56 KiB
JavaScript
Raw Normal View History

(function(U,le,o,b,T,R,g,t,de,C,i,S,ue){"use strict";const ge=async function(){const e=await(await fetch("https://uselessfacts.jsph.pl/api/v2/facts/random")).json();return{text:e.text,source:e.source,language:e.language}},me=async function(){return{text:(await(await fetch("https://dogapi.dog/api/v2/facts?limit=1")).json()).data[0].attributes.body}},ye=async function(){const e=await(await fetch("https://catfact.ninja/fact")).json();return{text:e.fact,length:e.length}},fe=async function(e){return await(await fetch(`https://api.obamabot.me/v2/image/petpet?image=${e.replace("webp","png")}`)).json()},pe=async function(e="gary"){try{switch(e){case"gary":return(await(await fetch("https://api.garythe.cat/gary")).json()).url;case"goober":return(await(await fetch("https://api.garythe.cat/goober")).json()).url;case"catapi":return(await(await fetch("https://api.thecatapi.com/v1/images/search")).json())[0].url;case"minker":return"https://minky.materii.dev/";default:throw new Error("Invalid Gary image source value")}}catch(n){return console.error(`[Gary API] Error fetching image from ${e}:`,n),null}},V=b.findByProps("sendMessage"),O=function(e){let n=e.text;return o.storage.factSettings?.includeCitation&&e.source&&(n+=`
2025-09-27 19:17:53 +02:00
Source: ${e.source}`),n},he={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(e,n){try{const a=await ye(),s=Date.now().toString();return V.sendMessage(n.channel.id,{content:O(a)},void 0,{nonce:s}),{type:4}}catch(a){return console.error("[CatFact] Error:",a),{type:4}}}},be={name:"dogfact",displayName:"dogfact",description:"Sends a dog fact.",displayDescription:"Sends a dog fact.",applicationId:"-1",inputType:1,type:1,execute:async function(e,n){try{const a=await me(),s=Date.now().toString();return V.sendMessage(n.channel.id,{content:O(a)},void 0,{nonce:s}),{type:4}}catch(a){return console.error("[DogFact] Error:",a),{type:4}}}},Ce={name:"useless",displayName:"useless",description:"Sends a useless fact.",displayDescription:"Sends a useless fact.",applicationId:"-1",inputType:1,type:1,execute:async function(e,n){try{const a=await ge(),s=Date.now().toString();return V.sendMessage(n.channel.id,{content:O(a)},void 0,{nonce:s}),{type:4}}catch(a){return console.error("[UselessFact] Error:",a),{type:4}}}},w={CONTENT:"This list is over 2000 characters. Send anyway?",CONFIRM:"Send",CANCEL:"Cancel"},ve={DETAILED:"detailed"},j="",B={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."},G={SEMICOL:"; ",NEW_LINE:`
`},Ie="Nothing to see here, huh...",K="github.com/fres621/vendetta-plugins",N={ENABLED:"\u2705",DISABLED:"\u274C",SELECTED:"\u2705",NOT_SELECTED:"\u274C"},Re=b.findByProps("sendMessage","receiveMessage"),E=b.findByProps("sendBotMessage"),H=function(){try{return b.findByStoreName("UserStore").getCurrentUser()?.premiumType===2?4e3:2e3}catch{return 2e3}}(),z=function(e){return Object.keys(e).includes(K)},q=function(e){return Object.values(e).find(function(n){return n.id==K})?.enabled},X=function(e){return e.find(function(n){return n.name===ve.DETAILED})?.value??!1},L=function(e){return!e||!Array.isArray(e)||e.length===0?"Unknown":e.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(G.SEMICOL)||"Unknown"},Y=function(e){return e.join(G.NEW_LINE).trimEnd()},P=function(e){return Y(e).length},$=async function(e,n){const a=Date.now().toString();await Re.sendMessage(e,{content:Y(n)},void 0,{nonce:a})},Z=function(e,n){return[`**My ${e} List | ${n} ${e}s**`,j]};async function Se(e,n){try{const a=X(e),s=o.storage.themeListAlwaysDetailed??!1;if(!T.themes||typeof T.themes!="object"){const f=n.channel.id;return E.sendBotMessage(f,"No themes found or themes not loaded yet."),{type:4}}const r=Object.values(T.themes),c=n.channel.id,l=Z("Theme",Object.keys(T.themes).length);if(r.length)for(const f of r){if(!f||typeof f!="object")continue;const{selected:u,data:m,id:v}=f,A=m?.name||"Unknown Theme",D=m?.description||"No description",_=m?.authors;a||s?l.push(`> **Name**: ${A}`,`> **Selected**: ${u?N.SELECTED:N.NOT_SELECTED}`,`> **Description**: ${D}`,`> **Authors**: ${L(_)}`,`> **[Install!](${v||"unknown"})**`,j):l.push(`> ${u?N.SELECTED:N.NOT_SELECTED} **${A}** by ${L(_)}`)}else l.push(Ie);const p=P(l)>H;if(p&&!z(R.plugins))E.sendBotMessage(c,B.SLM_NOT_INSTALLED);else if(p&&!q(R.plugins))E.sendBotMessage(c,B.SLM_NOT_ENABLED);else{if(P(l)>2e3)return g.alerts.showConfirmationAlert({content:w.CONTENT,confirmText:w.CONFIRM,cancelText:w.CANCEL,onConfirm:async function(){return await $(c,l)}});await $(c,l)}}catch(a){return console.error("[ThemeList] Error:",a),{type:4}}}async function Ne(e,n){try{const a=X(e),s=o.storage.pluginListAlwaysDetailed??!1,r=n.channel.id;if(!R.plugins||typeof R.plugins!="object")return E.sendBotMessage(r,"No plugins found or plugins not loaded yet."),{type:4};const c=Z("Plugin",Object.keys(R.plugins).length);for(const p of Object.values(R.plugins)){if(!p||typeof p!="object")continue;const{enabled:f,manifest:u,id:m}=p,v=u?.name||"Unknown Plugin",A=u?.description||"No description",D=u?.authors;a||s?c.push(`> **Name**: ${v}`,`> **Status**: ${f?N.ENABLED:N.DISABLED}`,`> **Description**: ${A}`,`> **Authors**: ${L(D)}`,`> **[Install!](${m||"unknown"})**`,j):c.push(`> ${f?N.ENABLED:N.DISABLED} **${v}** by ${L(D)}`)}const l=P(c)>H;if(l&&!z(R.plugins))E.sendBotMessage(r,B.SLM_NOT_INSTALLED);else if(l&&!q(R.plugins))E.sendBotMessage(r,B.SLM_NOT_ENABLED);else{if(P(c)>2e3)return g.alerts.showConfirmationAlert({content:w.CONTENT,confirmText:w.CONFIRM,cancelText:w.CANCEL,onConfirm:async function(){return await $(r,c)}});await $(r,c)}}catch(a){return console.error("[PluginList] Error:",a),{type:4}}}const we={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:Ne,applicationId:"-1",inputType:1,type:1},Ee={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:Se,applicationId:"-1",inputType:1,type:1
`];const s=je();Object.keys(s).forEach(function(l){const p=o.storage[l.toLowerCase()],f=e.find(function(u){return u.name==l.toLowerCase()})?.value??p;(f||p)&&!(p&&!f)&&(a.push(`[**${l}**]`),Object.keys(s[l]).forEach(function(u){a.push(`> ${u}: ${s[l][u]}`)}))});const r=o.storage.ephemeral,c=e.find(function(l){return l.name=="ephemeral"})?.value??r;if((c||r)&&!(r&&!c))return _e.sendBotMessage(n.channel.id,a.join(`
`)),{type:4};{const l=Date.now().toString();return Me.sendMessage(n.channel.id,{content:a.join(`
`)},void 0,{nonce:l}),{type:4}}}catch(a){return console.error("[Sysinfo] Error:",a),{type:4}}}const Ge={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(e){return{name:e,displayName:e,description:`Display the ${e} section. Set default in settings.`,displayDescription:`Display the ${e} section. Set default in settings.`,type:5,required:!1}})],execute:We,applicationId:"-1",inputType:1,type:1},oe=b.findByProps("sendMessage","receiveMessage"),Ke=b.findByStoreName("SpotifyStore");async function He(e,n){return o.storage.enabledCommands?.spotifyTrack?M(n,function(a){return`https://open.spotify.com/track/${a.id}`}):{type:4}}async function ze(e,n){return o.storage.enabledCommands?.spotifyAlbum?M(n,function(a){return`https://open.spotify.com/album/${a.album.id}`}):{type:4}}async function qe(e,n){return o.storage.enabledCommands?.spotifyArtists?M(n,function(a){return a.artists.map(function(s){return`[${s.name}](${s.external_urls.spotify})`}).join(`
`)}):{type:4}}async function Xe(e,n){return o.storage.enabledCommands?.spotifyCover?M(n,function(a){return a.album.image.url}):{type:4}}async function M(e,n){try{const a=e.channel.id,s=Ke?.getTrack?.();if(!s){const l=Date.now().toString();return oe.sendMessage(a,{content:"You are not listening to any track."},void 0,{nonce:l}),{type:4}}const r=n(s),c=Date.now().toString();return oe.sendMessage(a,{content:r},void 0,{nonce:c}),{type:4}}catch(a){return console.error("[Spotify Command] Error:",a),{type:4}}}const Ye={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:He},Ze={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:ze},Je={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:qe},Qe={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:Xe},et=b.findByProps("sendMessage"),tt={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(e,n){try{o.storage.garySettings||(o.storage.garySettings={imageSource:"gary"});const a=o.storage.garySettings.imageSource||"gary";console.log(`[Gary Command] Using image source: ${a}`);const s=await pe(a);if(!s)return console.log("[Gary Command] No image URL received"),{type:4};console.log(`[Gary Command] Sending image: ${s}`);const r=Date.now().toString();return et.sendMessage(n.channel.id,{content:s},void 0,{nonce:r}),{type:4}}catch(a){return console.error("[Gary] Error:",a),{type:4}}},applicationId:"-1",inputType:1,type:1},nt=b.findByProps("sendMessage");function k(e){if(!e)return!1;const n=e.toLowerCase();return[".jpg",".jpeg",".png",".gif",".webp",".mp4",".webm",".mov"].some(function(a){return n.includes(a)})?!0:["i.redd.it","i.imgur.com","preview.redd.it","v.redd.it","redgifs.com","gfycat.com","imgur.com"].some(function(a){return n.includes(a)})}function at(e){const n=e.data;if(n.secure_media?.reddit_video?.fallback_url)return n.secure_media.reddit_video.fallback_url;if(n.media?.reddit_video?.fallback_url)return n.media.reddit_video.fallback_url;const a=n.url;if(k(a))return a;if(n.preview?.images?.[0]){const s=n.preview.images[0];if(s.source?.url){const r=s.source.url.replace(/&/g,"&");if(k(r))return r}if(s.resolutions?.length>0){const r=s.resolutions[s.resolutions.length-1];if(r?.url){const c=r.url.replace(/&/g,"&");if(k(c))return c}}}if(n.secure_media?.oembed?.thumbnail_url){const s=n.secure_media.oembed.thumbnail_url;if(k(s))return s}return n.thumbnail&&n.thumbnail!=="self"&&n.thumbnail!=="default"&&n.thumbnail!=="nsfw"&&n.thumbnail.startsWith("http")&&k(n.thumbnail)?n.thumbnail:null}async function ot(){try{console.log("[LoveFemboys] Fetching random media");const e=await fetch("https://reddit.com/r/femboys.json?limit=100&raw_json=1");if(!e.ok)return console.log("[LoveFemboys] Failed to fetch from Reddit API:",e.status,e.statusText),null;const n=await e.json();console.log(`[LoveFemboys] Fetched ${n.data.children.length} posts`);const a=[];for(const r of n.data.children){const c=r.data;if(c.selftext&&!c.url)continue;const l=at(r);l&&(console.log(`[LoveFemboys] Found valid media: ${l}`),a.push(l))}if(console.log(`[LoveFemboys] Found ${a.length} valid media posts`),a.length===0)return console.log("[LoveFemboys] No suitable media found"),null;const s=a[Math.floor(Math.random()*a.length)];return console.log(`[LoveFemboys] Selected: ${s}`),s}catch(e){return console.error("[LoveFemboys] Error fetching media:",e),null}}const st={name:"lovefemboys",displayName:"lovefemboys",description:"
${JSON.stringify(p,null,4)}
\`\`\``;if(r)return{type:4,data:{content:f,flags:64}};if(s){const u=Date.now().toString();return rt.sendMessage(n.channel.id,{content:f},void 0,{nonce:u}),{type:4}}else return it.sendBotMessage(n.channel.id,f),{type:4}}catch(a){console.error("[IP] Command error:",a);const s=`\u274C An error occurred while looking up IP information: ${a.message||"Unknown error"}`;return e?.find?.(function(r){return r.name==="ephemeral"})?.value??!1?{type:4,data:{content:s,flags:64}}:(C.showToast(s,i.getAssetIDByName("CircleXIcon")),{type:4})}},applicationId:"-1",inputType:1,type:1},lt=b.findByProps("sendMessage"),dt=b.findByProps("sendBotMessage","sendMessage","receiveMessage"),ut=[{name:"anal",value:"anal"},{name:"avatar",value:"avatar"},{name:"boobs",value:"boobs"},{name:"blowjob image",value:"blowjob"},{name:"blowjob gif",value:"bj"},{name:"classic",value:"classic"},{name:"cuddle",value:"cuddle"},{name:"cum",value:"cum"},{name:"cum jpg",value:"cum_jpg"},{name:"ero",value:"ero"},{name:"ero feet",value:"erofeet"},{name:"ero kemo",value:"erokemo"},{name:"ero kitsune",value:"erok"},{name:"ero neko",value:"eron"},{name:"ero yuri",value:"eroyuri"},{name:"femdom",value:"femdom"},{name:"feet",value:"feet"},{name:"feet gif",value:"feetg"},{name:"fox girl",value:"fox_girl"},{name:"futanari",value:"futanari"},{name:"gasm",value:"gasm"},{name:"gecg",value:"gecg"},{name:"kemonomimi",value:"kemonomimi"},{name:"kiss",value:"kiss"},{name:"kuni",value:"kuni"},{name:"hentai",value:"hentai"},{name:"holo",value:"holo"},{name:"holo ero",value:"holoero"},{name:"holo lewd",value:"hololewd"},{name:"lesbian",value:"les"},{name:"lewd",value:"lewd"},{name:"lewd kemo",value:"lewdkemo"},{name:"lewd kitsune",value:"lewdk"},{name:"neko",value:"neko"},{name:"neko gif",value:"ngif"},{name:"neko gif nsfw",value:"nsfw_neko_gif"},{name:"nsfw avatar",value:"nsfw_avatar"},{name:"pussy",value:"pussy"},{name:"pussy jpg",value:"pussy_jpg"},{name:"pwank",value:"pwankg"},{name:"random hentai gif",value:"Random_hentai_gif"},{name:"small boobs",value:"smallboobs"},{name:"smug",value:"smug"},{name:"solo",value:"solo"},{name:"solo gif",value:"solog"},{name:"spank",value:"spank"},{name:"tits",value:"tits"},{name:"tickle",value:"tickle"},{name:"trap",value:"trap"},{name:"waifu",value:"waifu"},{name:"wallpaper",value:"wallpaper"},{name:"woof",value:"woof"},{name:"yuri",value:"yuri"}],gt=[{name:"1",value:"1"},{name:"2",value:"2"},{name:"5",value:"5"},{name:"8",value:"8"},{name:"10",value:"10"}];async function mt(e,n){const a=[];for(let s=0;s<n;s++)try{s>0&&await new Promise(function(l){return setTimeout(l,1e3)});const r=await fetch(`https://nekos.life/api/v2/img/${e}`);if(!r.ok){console.error(`[NekosLife] API request failed: ${r.status}`);continue}const c=await r.json();c.url&&a.push(c.url)}catch(r){console.error(`[NekosLife] Error fetching image ${s+1}:`,r)}return a}function yt(e){return!e||typeof e!="string"?!1:["anal","boobs","blowjob","bj","cum","cum_jpg","ero","erofeet","erokemo","erok","eron","eroyuri","femdom","feet","feetg","futanari","gasm","kuni","hentai","holoero","hololewd","les","lewd","lewdkemo","lewdk","nsfw_neko_gif","nsfw_avatar","pussy","pussy_jpg","pwankg","Random_hentai_gif","smallboobs","solo","solog","tits","trap","yuri"].includes(e.toLowerCase())}const ft={name:"nekoslife",displayName:"nekoslife",description:"Get images/gifs from nekos.life",displayDescription:"Get images/gifs from nekos.life",options:[{name:"category",displayName:"category",description:"Category of image/gif to get",displayDescription:"Category of image/gif to get",type:3,required:!0,choices:ut.map(function(e){return{name:e.name,value:e.value}})},{name:"limit",displayName:"limit",description:"Number of images to get (default: 1)",displayDescription:"Number of images to get (default: 1)",type:3,required:!1,choices:gt.map(function(e){return{name:e.name,value:e.value}})},{name:"send",displayName:"send",description:"Send to chat (WARNING: Use NSFW channel for NSFW content)",displayDescription:"Send to chat (WARNING: Use NSFW channel for NSFW content)",type:5,required:!1},{name:"ephemeral",displayNa
`);if(c)return console.log("[NekosLife] Sending ephemeral response"),{type:4,data:{content:u,flags:64}};if(r){console.log("[NekosLife] Sending to chat");const m=Date.now().toString();return lt.sendMessage(n.channel.id,{content:u},void 0,{nonce:m}),{type:4}}else return console.log("[NekosLife] Sending as bot message"),dt.sendBotMessage(n.channel.id,u),{type:4}}catch(a){console.error("[NekosLife] Command error:",a);const s="\u274C An error occurred while fetching images.";return(Array.isArray(e)?e?.find?.(function(r){return r?.name==="ephemeral"})?.value??!1:e?.ephemeral?.value||e?.ephemeral)?{type:4,data:{content:s,flags:64}}:(C.showToast(s,i.getAssetIDByName("CircleXIcon")),{type:4})}},applicationId:"-1",inputType:1,type:1},{ScrollView:I}=t.ReactNative,{FormRow:d,FormSwitchRow:y}=ue.Forms;o.storage.factSettings??={sendAsReply:!0,includeCitation:!1},o.storage.listSettings??={pluginListAlwaysDetailed:!1,themeListAlwaysDetailed:!1},o.storage.garySettings??={imageSource:"gary"},o.storage.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},o.storage.pendingRestart??=!1,o.storage.hiddenSettings??={enabled:!1,visible:!1,konochanBypassNsfw:!1};function h({title:e,icon:n,children:a,padding:s=!1}){const r=t.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}});return t.React.createElement(t.ReactNative.View,{style:{marginHorizontal:16,marginTop:16}},e&&t.React.createElement(t.ReactNative.View,{style:r.titleContainer},n&&t.React.createElement(t.ReactNative.Image,{style:r.icon,source:n,resizeMode:"cover"}),t.React.createElement(t.ReactNative.Text,{style:r.titleText},e.toUpperCase())),t.React.createElement(t.ReactNative.View,{style:r.main},s?t.React.createElement(t.ReactNative.View,{style:{paddingHorizontal:16,paddingVertical:16}},a):a))}function pt({onHiddenUnlock:e}){const[n,a]=t.React.useState(0),[s,r]=t.React.useState(null),c=t.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}}),l=function(){if(o.storage.hiddenSettings.enabled){o.storage.hiddenSettings.visible=!o.storage.hiddenSettings.visible,C.showToast(`Hidden settings ${o.storage.hiddenSettings.visible?"visible":"hidden"}`,i.getAssetIDByName("SettingsIcon")),e?.();return}s&&clearTimeout(s);const p=setTimeout(function(){a(0)},1e3);r(p);const f=n+1;a(f),!(f<10)&&(C.showToast("\u{1F513} Hidden settings unlocked!",i.getAssetIDByName("CheckmarkIcon")),o.storage.hiddenSettings.enabled=!0,o.storage.hiddenSettings.visible=!0,a(0),e?.())};return t.React.createElement(t.ReactNative.View,{style:c.container},t.React.createElement(t.ReactNative.Pressable,{style:c.iconContainer,onPress:l},t.React.createElement(t.ReactNative.Image,{source:i.getAssetIDByName("SettingsIcon"),style:c.icon})),t.React.createElement(t.ReactNative.Text,{style:c.title},"Commands"),t.React.createElement(t.ReactNative.Text,{style:c.subtitle},"A collection of useful commands"))}function ht(){S.useProxy(o.storage);const[,e]=t.React.useReducer(function(a){return a+1},0),n=t.stylesheet.createThemedStyleSheet({container:{flex:1,backgroundColor:g.semanticColors.BACKGROUND_PRIMARY},warningText:{fontSize:14,color:g.semanticColors
`,"Tap on any developer to visit their GitHub profile.")),n.map(function(s,r){return t.React.createElement(t.ReactNative.Pressable,{key:r,style:e.creditItem,onPress:function(){return a(s.github)},android_ripple:{color:g.semanticColors.ANDROID_RIPPLE,radius:200}},t.React.createElement(t.ReactNative.Image,{source:{uri:s.avatar},style:e.avatar}),t.React.createElement(t.ReactNative.View,{style:e.textContainer},t.React.createElement(t.ReactNative.Text,{style:e.commandText},s.command),t.React.createElement(t.ReactNative.Text,{style:e.authorText},"by ",s.author),t.React.createElement(t.ReactNative.Text,{style:e.linkText},s.github.replace("https://github.com/","@"))))}),t.React.createElement(h,{title:"About",icon:i.getAssetIDByName("InfoIcon"),padding:!0},t.React.createElement(t.ReactNative.Text,{style:e.versionText},"Commands Plugin Collection",`
`,"Version 1.1.0"))))}function wt(){S.useProxy(o.storage);const e=t.NavigationNative.useNavigation(),[,n]=t.React.useReducer(function(a){return a+1},0);return t.React.useEffect(function(){return function(){o.storage.pendingRestart&&(o.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}))}},[]),t.React.createElement(I,{style:{flex:1,backgroundColor:g.semanticColors.BACKGROUND_PRIMARY}},t.React.createElement(pt,{onHiddenUnlock:n}),t.React.createElement(h,{title:"Command Categories",icon:i.getAssetIDByName("ChannelListIcon")},t.React.createElement(d,{label:"Facts Commands",subLabel:"Cat facts, dog facts, and useless facts",leading:t.React.createElement(d.Icon,{source:i.getAssetIDByName("BookmarkIcon")}),trailing:t.React.createElement(d.Arrow,null),onPress:function(){return e.push("VendettaCustomPage",{title:"Facts Commands",render:bt})}}),t.React.createElement(d,{label:"List Commands",subLabel:"Plugin lists and theme lists",leading:t.React.createElement(d.Icon,{source:i.getAssetIDByName("ListViewIcon")}),trailing:t.React.createElement(d.Arrow,null),onPress:function(){return e.push("VendettaCustomPage",{title:"List Commands",render:vt})}}),t.React.createElement(d,{label:"Image Commands",subLabel:"PetPet, KonoChan, and image utilities",leading:t.React.createElement(d.Icon,{source:i.getAssetIDByName("ImageIcon")}),trailing:t.React.createElement(d.Arrow,null),onPress:function(){return e.push("VendettaCustomPage",{title:"Image Commands",render:It})}}),t.React.createElement(d,{label:"Gary Commands",subLabel:`Gary images - Current: ${o.storage.garySettings.imageSource==="gary"?"Gary API":o.storage.garySettings.imageSource==="catapi"?"Cat API":o.storage.garySettings.imageSource==="minker"?"Minker API":o.storage.garySettings.imageSource==="goober"?"Goober API":"Gary API"}`,leading:t.React.createElement(d.Icon,{source:i.getAssetIDByName("CameraIcon")}),trailing:t.React.createElement(d.Arrow,null),onPress:function(){return e.push("VendettaCustomPage",{title:"Gary Commands",render:Ct})}}),t.React.createElement(d,{label:"Spotify Commands",subLabel:"Share your Spotify activity",leading:t.React.createElement(d.Icon,{source:i.getAssetIDByName("SpotifyNeutralIcon")}),trailing:t.React.createElement(d.Arrow,null),onPress:function(){return e.push("VendettaCustomPage",{title:"Spotify Commands",render:Rt})}}),t.React.createElement(d,{label:"Other Commands",subLabel:"System info, network tools, and miscellaneous",leading:t.React.createElement(d.Icon,{source:i.getAssetIDByName("MoreHorizontalIcon")}),trailing:t.React.createElement(d.Arrow,null),onPress:function(){return e.push("VendettaCustomPage",{title:"Other Commands",render:St})}})),o.storage.hiddenSettings?.enabled&&o.storage.hiddenSettings?.visible&&t.React.createElement(h,{title:"\u{1F513} Hidden Settings",icon:i.getAssetIDByName("EyeIcon")},t.React.createElement(d,{label:"Hidden Commands",subLabel:"Experimental and mature content commands",leading:t.React.createElement(d.Icon,{source:i.getAssetIDByName("WarningIcon")}),trailing:t.React.createElement(d.Arrow,null),onPress:function(){return e.push("VendettaCustomPage",{title:"Hidden Settings",render:ht})}})),t.React.createElement(h,{title:"More Options",icon:i.getAssetIDByName("SettingsIcon")},t.React.createElement(d,{label:"Credits",subLabel:"View original authors of the plugins",leading:t.React.createElement(d.Icon,{source:i.getAssetIDByName("HeartIcon")}),trailing:t.React.createElement(d.Arrow,null),onPress:function(){return e.push("VendettaCustomPage",{title:"Credits",render:Nt})}})),t.React.createElement(t.ReactNative.View,{style:{height:32}}))}o.storage.factSettings||(o.storage.factSettings={sendAsReply:!0,includeCitation:!1}),o.storage.listSettings||(o.storage.listSettings={pluginListAlwaysDetailed:!1,themeListAlwaysDetailed:!1}),o.storage.garySettings||(o.storage.garySettings={imageSource:"gary"}),o.storage.enabledCommands||(o.storage.enabledCommands={catfact:!0,dogfact:!0,use