utils.selectionMessage: move to components
This commit is contained in:
		
							parent
							
								
									1014fe9979
								
							
						
					
					
						commit
						159870877b
					
				
					 1 changed files with 80 additions and 38 deletions
				
			
		
							
								
								
									
										118
									
								
								src/lib/utils.js
									
										
									
									
									
								
							
							
						
						
									
										118
									
								
								src/lib/utils.js
									
										
									
									
									
								
							| 
						 | 
					@ -159,62 +159,103 @@ async function hastebin(body) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
hf.selectionMessages = hf.selectionMessages || new Eris.Collection();
 | 
					hf.selectionMessages = hf.selectionMessages || new Eris.Collection();
 | 
				
			||||||
async function selectionMessage(msg, heading, options, timeout = 30000) {
 | 
					async function selectionMessage(msg, heading, options, timeout = 30000) {
 | 
				
			||||||
  let content = `${heading}\n\`\`\`ini\n`;
 | 
					  const data = {
 | 
				
			||||||
  options.slice(0, 20).forEach((value, index) => {
 | 
					    content: heading,
 | 
				
			||||||
    content += `[${index + 1}] ${value.display}\n`;
 | 
					 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
  if (options.length > 20) {
 | 
					 | 
				
			||||||
    content += `; Displaying 20/${options.length} results\n`;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  content += "\n[c] Cancel```";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  const displayMessage = await msg.channel.createMessage({
 | 
					 | 
				
			||||||
    content,
 | 
					 | 
				
			||||||
    allowedMentions: {
 | 
					    allowedMentions: {
 | 
				
			||||||
      repliedUser: false,
 | 
					      repliedUser: false,
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    messageReference: {
 | 
					    messageReference: {
 | 
				
			||||||
      messageID: msg.id,
 | 
					      messageID: msg.id,
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    components: [
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        type: 1,
 | 
				
			||||||
 | 
					        components: [
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            type: 3,
 | 
				
			||||||
 | 
					            custom_id: "selection",
 | 
				
			||||||
 | 
					            options: [],
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        type: 1,
 | 
				
			||||||
 | 
					        components: [
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            type: 2,
 | 
				
			||||||
 | 
					            style: 4,
 | 
				
			||||||
 | 
					            label: "Cancel",
 | 
				
			||||||
 | 
					            custom_id: "cancel",
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  options.slice(0, 20).forEach((value) => {
 | 
				
			||||||
 | 
					    data.components[0].components[0].options.push({
 | 
				
			||||||
 | 
					      label: value.display,
 | 
				
			||||||
 | 
					      value: value.key,
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					  if (options.length > 20) {
 | 
				
			||||||
 | 
					    data.content += `\n\nDisplaying 20/${options.length} results`;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const displayMessage = await msg.channel.createMessage(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return await new Promise((resolve, reject) => {
 | 
					  return await new Promise((resolve, reject) => {
 | 
				
			||||||
    function listener(msg2) {
 | 
					    function listener(packet) {
 | 
				
			||||||
      if (
 | 
					      if (packet.t == "INTERACTION_CREATE") {
 | 
				
			||||||
        msg2.author.id == msg.author.id &&
 | 
					        const interaction = packet.d;
 | 
				
			||||||
        msg2.channel.id == msg.channel.id
 | 
					        const user = interaction.member.user || interaction.user;
 | 
				
			||||||
      ) {
 | 
					 | 
				
			||||||
        if (msg2.content == "c") {
 | 
					 | 
				
			||||||
          hf.events.remove("messageCreate", `selection.${msg.id}`);
 | 
					 | 
				
			||||||
          clearTimeout(hf.selectionMessages.get(msg.id));
 | 
					 | 
				
			||||||
          hf.selectionMessages.remove(msg.id);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
          displayMessage.delete();
 | 
					        if (
 | 
				
			||||||
          if (msg.channel.permissionsOf(hf.bot.user.id).has("manageMessages")) {
 | 
					          user.id == msg.author.id &&
 | 
				
			||||||
            msg2.delete();
 | 
					          interaction.channel_id == msg.channel.id
 | 
				
			||||||
          }
 | 
					        ) {
 | 
				
			||||||
 | 
					          if (interaction.data.custom_id == "cancel") {
 | 
				
			||||||
          reject("Canceled");
 | 
					            hf.events.remove("unknown", `selection.${msg.id}`);
 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          const number = parseInt(msg2.content);
 | 
					 | 
				
			||||||
          if (!isNaN(number) && number < 21 && number > 0) {
 | 
					 | 
				
			||||||
            hf.events.remove("messageCreate", `selection.${msg.id}`);
 | 
					 | 
				
			||||||
            clearTimeout(hf.selectionMessages.get(msg.id));
 | 
					            clearTimeout(hf.selectionMessages.get(msg.id));
 | 
				
			||||||
            hf.selectionMessages.remove(msg.id);
 | 
					            hf.selectionMessages.remove(msg.id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            displayMessage.delete();
 | 
					            hf.bot.requestHandler.request(
 | 
				
			||||||
            if (
 | 
					              "POST",
 | 
				
			||||||
              msg.channel.permissionsOf(hf.bot.user.id).has("manageMessages")
 | 
					              `/interactions/${interaction.id}/${interaction.token}/callback`,
 | 
				
			||||||
            ) {
 | 
					              false,
 | 
				
			||||||
              msg2.delete();
 | 
					              {
 | 
				
			||||||
            }
 | 
					                type: 6,
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            resolve(options[number - 1].value);
 | 
					            displayMessage.delete();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            reject("Canceled");
 | 
				
			||||||
 | 
					          } else {
 | 
				
			||||||
 | 
					            hf.events.remove("unknown", `selection.${msg.id}`);
 | 
				
			||||||
 | 
					            clearTimeout(hf.selectionMessages.get(msg.id));
 | 
				
			||||||
 | 
					            hf.selectionMessages.remove(msg.id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            hf.bot.requestHandler.request(
 | 
				
			||||||
 | 
					              "POST",
 | 
				
			||||||
 | 
					              `/interactions/${interaction.id}/${interaction.token}/callback`,
 | 
				
			||||||
 | 
					              false,
 | 
				
			||||||
 | 
					              {
 | 
				
			||||||
 | 
					                type: 6,
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            displayMessage.delete();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            const result = options.filter(
 | 
				
			||||||
 | 
					              (opt) => opt.key == interaction.data.values[0]
 | 
				
			||||||
 | 
					            )[0].value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            resolve(result);
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    hf.events.add("messageCreate", `selection.${msg.id}`, listener);
 | 
					    hf.events.add("unknown", `selection.${msg.id}`, listener);
 | 
				
			||||||
    hf.selectionMessages.set(
 | 
					    hf.selectionMessages.set(
 | 
				
			||||||
      msg.id,
 | 
					      msg.id,
 | 
				
			||||||
      setTimeout(() => {
 | 
					      setTimeout(() => {
 | 
				
			||||||
| 
						 | 
					@ -272,6 +313,7 @@ async function lookupUser(msg, str, filter) {
 | 
				
			||||||
    ) {
 | 
					    ) {
 | 
				
			||||||
      selection.push({
 | 
					      selection.push({
 | 
				
			||||||
        value: user,
 | 
					        value: user,
 | 
				
			||||||
 | 
					        key: user.id,
 | 
				
			||||||
        display: `${user.username}#${user.discriminator}${
 | 
					        display: `${user.username}#${user.discriminator}${
 | 
				
			||||||
          user.nick ? ` (${user.nick})` : ""
 | 
					          user.nick ? ` (${user.nick})` : ""
 | 
				
			||||||
        }`,
 | 
					        }`,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue