[javascript] Test

Viewer

  1. const { setTimeout } = require('node:timers/promises')
  2. const randomChar = require('anime-character-random')
  3. const { EmbedBuilder, ActionRowBuilder, SelectMenuBuilder, ComponentType } = require('discord.js')
  4. const AnimeGuessListSchema = require('../../schemas/AnimeGuessSchema');
  5. const mongoose = require('mongoose');
  6.  
  7. module.exports = {
  8.     name: 'guess-anime-character',
  9.     description: 'Guess the anime character from the image!',
  10.     // devOnly: Boolean,
  11.     testOnly: true,
  12.     // options: Object[],
  13.     //deleted: true,
  14.  
  15.     callback: async (client, interaction) => {
  16.         await interaction.reply('Working on it');
  17.         async function myFunction() {
  18.             const AnimeData = await randomChar.GetChar()
  19.             const db = [AnimeData.OtherCharacterList[0], AnimeData.OtherCharacterList[1], AnimeData.OtherCharacterList[2], AnimeData.CharacterName]
  20.             const list = db.sort(() => Math.random() - 0.5)
  21.             const embed = new EmbedBuilder()
  22.                 .setTitle('Guess the anime character')
  23.                 .setAuthor({ name: interaction.user.username.toString(), iconURL: interaction.guild.iconURL() })
  24.                 .setDescription(`Anime Name : ${AnimeData.AnimeName}`)
  25.                 .setColor('Red')
  26.                 .setFooter({ text: 'Cziju || Guess The Anime Character', iconURL: client.user.avatarURL() })
  27.                 .setTimestamp()
  28.                 .setImage(AnimeData.CharacterImage)
  29.  
  30.             const row = new ActionRowBuilder()
  31.                 .addComponents(
  32.                     new SelectMenuBuilder()
  33.                         .setCustomId('select')
  34.                         .setPlaceholder('Select an Answer')
  35.                         .addOptions(
  36.                             {
  37.                                 label: list[0],
  38.                                 description: 'Choose The Correct Answer',
  39.                                 value: list[0]
  40.                             },
  41.                             {
  42.                                 label: list[1],
  43.                                 description: 'Choose The Correct Answer',
  44.                                 value: list[1]
  45.                             },
  46.                             {
  47.                                 label: list[2],
  48.                                 description: 'Choose The Correct Answer',
  49.                                 value: list[2]
  50.                             },
  51.                             {
  52.                                 label: list[3],
  53.                                 description: 'Choose The Correct Answer',
  54.                                 value: list[3]
  55.                             }
  56.                         )
  57.                 )
  58.             await interaction.editReply({ content: 'You Have **30 Seconds** To answer', components: [row], embeds: [embed] })
  59.  
  60.             const filter = i => i.user.id === interaction.user.id
  61.  
  62.             const collector = interaction.channel.createMessageComponentCollector({ filter, componentType: ComponentType.SelectMenu, max: 1, time: 30000 })
  63.  
  64.             collector.on('collect', async i => {
  65.                 if (i.values[0] === AnimeData.CharacterName) {
  66.                     await interaction.editReply({ content: 'You have Answered **Correctly**', components: [] })
  67.                     let getUserProfile = await AnimeGuessListSchema.findOne({ guildId: interaction.guild.id });
  68.  
  69.                     if (!getUserProfile) {
  70.                         getUserProfile = new AnimeGuessListSchema({
  71.                           _id: new mongoose.Types.ObjectId(),
  72.                           guildId: interaction.guild.id,
  73.                           memberId: interaction.member.id,
  74.                           points: 1
  75.                         });
  76.                 
  77.                         await getUserProfile.save();
  78.                     } else {
  79.                         console.log('USPESNO');
  80.                         getUserProfile.updateOne({ guildId: interaction.guild.id, memberId: interaction.user.id}, { 
  81.                             $inc: { 
  82.                                 points: 100 
  83.                             } 
  84.                         })
  85.                     }
  86.  
  87.  
  88.                 } else {
  89.                     await interaction.editReply({ content: `You have Answered **Incorrectly**\n The correct answer is **${AnimeData.CharacterName}**`, components: [] })
  90.                     let getUserProfile = await AnimeGuessListSchema.findOne({ guildId: interaction.guild.id });
  91.  
  92.                     if (!getUserProfile) {
  93.                         getUserProfile = new AnimeGuessListSchema({
  94.                           _id: new mongoose.Types.ObjectId(),
  95.                           guildId: interaction.guild.id,
  96.                           memberId: interaction.member.id,
  97.                           points: 1
  98.                         });
  99.                 
  100.                         await getUserProfile.save();
  101.                     } else {
  102.                         console.log('USPESNO');
  103.                         getUserProfile.updateOne({ guildId: interaction.guild.id, memberId: interaction.user.id}, { 
  104.                             $inc: { 
  105.                                 points: 100 
  106.                             } 
  107.                         })
  108.                       }
  109.                 }
  110.             })
  111.             collector.on('end', async collected => {
  112.                 if (collected.size === 0) await interaction.editReply({ content: `🕛 Time's Up\n The correct answer is **${AnimeData.CharacterName}**`, components: [] })
  113.             })
  114.         }
  115.         myFunction();
  116.     },
  117. };

Editor

You can edit this paste and save as new:


File Description
  • Test
  • Paste Code
  • 10 Dec-2023
  • 5.52 Kb
You can Share it: