• Как выводить n-ое кол-во ролей в магазине?

    @K1tekat Автор вопроса
    //interactionCreate.js
     if (interaction.customId == "buy1" || interaction.customId == "buy2" || interaction.customId == "buy3") {
          let guild = await Guild.findOne({ id: interaction.guild.id }) || new Guild({ id: interaction.guild.id });
          let con = interaction.message.content;
          let page = 1;
          if (con) page = con.match(/\d+/)[0];
          let shop = await Shop.findOne({ id: interaction.guild.id }) || new Shop({ id: interaction.guild.id });
          if (interaction.customId == "buy2") {
    
              page++;
              if (page == 2) {
                  let p = 1;
                  let txt = " ";
                  if (shop.items == null || shop.items == []){ 
                   txt = "На данный момент предметов в магазине нет <a:Loading:941211075213393971>";
                   button1.disabled()
              }
                  if (shop.items != null) for (var i = 0; i < shop.items.length; i++) {
                      txt += `[#${p++}] ${shop.items[i]} - \`${shop.items_pr[i]}\` ${guild.val}\n`
                  }
                  if (txt == " ") txt = "На данный момент предметов в магазине нет <a:Loading:941211075213393971>";
                  let emb = new MessageEmbed()
                      .setDescription(stripIndents`**${txt}**`)
                      .setTitle("Магазин")
                      .setTitle(`**Предметы**`)
                      .setColor("GREEN")
                      .setThumbnail(interaction.guild.iconURL({ dynamic: true }))
    
                  interaction.update({ content: `Страница: ${page}`, embeds: [emb], ephemeral: true })
              }
              if (page == 3) {
                  let txt = "На данный момент предметов в магазине нет <a:Loading:941211075213393971>";
                  if (guild.dop_item2 && !guild.dop_item1) txt = `**[1] Love rooms - \`${guild.dop_item2}\` ${guild.val}**`
                  if (guild.dop_item1 && !guild.dop_item2) txt = `**[1] Личная роль - \`${guild.dop_item1}\` ${guild.val}**`
                  if (guild.dop_item1 && guild.dop_item2) txt = `**[1] Личная роль - \`${guild.dop_item2}\` ${guild.val}\n[2] Love rooms - \`${guild.dop_item1}\` ${guild.val}**`
                  let emb = new MessageEmbed()
                      .setDescription(stripIndents`${txt}`)
                      .setTitle("Магазин")
                      .setTitle(`**Уникальные предметы**`)
                      .setColor("GREEN")
                      .setThumbnail(interaction.guild.iconURL({ dynamic: true }))
                  interaction.update({ content: `Страница: ${page}`, embeds: [emb] })
              }
          }
          if (interaction.customId == "buy1") {
              page--;
              if (page < 1) {
                // button1.components.forEach((button) => (button.disabled = true))
                  return interaction.reply({
                      content: `**Вы дошли до пределов магазина!**`,
                      ephemeral: true
                  });
              }
              if (page == 2) {
                  let p = 1;
                  let txt = " ";
    
                  if (!shop.items || shop.items == []) txt = "На данный момент предметов в магазине нет <a:Loading:941211075213393971>";
                  if (shop.items != null) for (var i = 0; i < shop.items.length; i++) {
    
                      txt += `[#${p++}] ${shop.items[i]} - \`${shop.items_pr[i]}\` ${guild.val}\n Владелец:<@${shop.user[i]}>\n`
                  }
                  if (txt == " ") txt = "На данный момент предметов в магазине нет <a:Loading:941211075213393971>";
                  let emb = new MessageEmbed()
                      .setDescription(stripIndents`**${txt}**`)
                      .setTitle("Магазин")
                      .setTitle(`**Предметы**`)
                      .setColor("GREEN")
                      .setThumbnail(interaction.guild.iconURL({ dynamic: true }))
                  interaction.update({ content: `Страница: ${page}`, embeds: [emb] })
              }
              if (page == 1) {
                  let p = 1;
                  let txt = " ";
                  if (!shop.roles || shop.roles == []) txt = "На данный момент предметов в магазине нет <a:Loading:941211075213393971>";
                  if (shop.roles) for (var i = 0; i < shop.roles.length; i++) {
                      txt += `[#${p++}] <@&${shop.roles[i]}> - \`${shop.roles_pr[i]}\` ${guild.val}\n Владелец:<@${shop.user[i]}>\n`
                  }
                  if (txt == " ") txt = "На данный момент предметов в магазине нет <a:Loading:941211075213393971>";
                  let emb = new MessageEmbed()
                      .setTitle("Магазин")
                      .setTitle(`**Роли**`)
                      .setColor("GREEN")
                      .setThumbnail(interaction.guild.iconURL({ dynamic: true }))
                      .setDescription(stripIndents`**${txt}**`)
                  interaction.update({ content: `Страница: ${page}`, embeds: [emb] })
              }
    
          }
      }
       if (interaction.customId == "buy3") {
          interaction.reply({
              content: `**Укажите: номер страницы и номер предмета!**`,
              ephemeral: true
          });
          let shop = await Shop.findOne({ id: interaction.guild.id }) || new Shop({ id: interaction.guild.id });
          let user = await User.findOne({ userID: interaction.user.id, guild: interaction.guild.id }) || new User({ userID: interaction.user.id, guild: interaction.guild.id });
          const filter = (message) => message.author.id === interaction.user.id;
          var col1 = interaction.channel.createMessageCollector({ filter, max: 1, time: 180000 });
          let member = interaction.guild.members.cache.get(interaction.user.id);
          col1.on("collect", async (m) => {
              let a = m.content.split(' ')[0];
              let b = m.content.split(' ')[1];
              let emb = new MessageEmbed()
                  .setDescription(stripIndents`Укажите \`корректные\` данные!`)
                  .setColor("RED")
                  .setTitle("**Ошибка ❌**")
    
              if (!b && !a) return interaction.followUp({ embeds: [emb], ephemeral: true });
              let embeds = new MessageEmbed()
                  .setDescription(stripIndents`Произошел сбой при покупке предмета!`)
                  .setColor("RED")
                  .setTitle("**Ошибка ❌**")
    
              if (!b && !a) return interaction.followUp({ embeds: [emb], ephemeral: true });
              if (isNaN(a) == true || isNaN(b) == true) return interaction.followUp({
                  embeds: [emb],
                  ephemeral: true
              });
              if (a > 3) return interaction.followUp({
                  embeds: [emb],
                  ephemeral: true
              });
              if (a == 1) {
                  let role = shop.roles[b - 1];
                  let sum = shop.roles_pr[b - 1];
                  if (!role) return interaction.followUp({
                      embeds: [embeds],
                      ephemeral: true
                  });
                  if (user.withmoney < sum) {
                      let embed = new MessageEmbed()
                          .setDescription(stripIndents`У Вас нехватка средств, необходимая сумма: \`${sum}\`!`)
                          .setColor("RED")
                          .setTitle("**Ошибка ❌**")
                      return interaction.followUp({ embeds: [embed], ephemeral: true });
                  }
                  role = interaction.guild.roles.cache.get(role);
                  if (!role) return interaction.followUp({ content: "Упс... на сервере нет роли!", ephemeral: true });
    
                  member.roles.add(role.id);
                  user.withmoney -= sum;
                  user.save()
                  m.delete().catch(() => { });
                  let embed = new MessageEmbed()
                      .setDescription(stripIndents`**Вам была выдана роль: \`${role.name}\`**!`)
                      .setColor("GREEN")
                      .setTitle("**Успех ✅**")
                  return interaction.followUp({ embeds: [embed], ephemeral: true });
              }
              if (a == 2) {
                  let sum = shop.items_pr[b - 1];
                  let item = shop.items[b - 1];
                  if (!item) return interaction.followUp({
                      embeds: [emb],
                      ephemeral: true
                  });
                  if (user.withmoney < sum) {
                      let embed = new MessageEmbed()
                          .setDescription(stripIndents`У Вас нехватка средств, необходимая сумма: \`${sum}\`!`)
                          .setColor("RED")
                          .setTitle("**Ошибка ❌**")
                      return interaction.followUp({ embeds: [embed], ephemeral: true });
                  }
                  user.withmoney -= sum;
                  user.save()
                  let embed = new MessageEmbed()
                      .setDescription(stripIndents`**Вы успешно приобрели ${item}!**`)
                      .setColor("GREEN")
                      .setTitle("**Успех ✅**")
                  return interaction.followUp({ embeds: [embed], ephemeral: true });
              }
             })}
  • Как кинуть приглашение на трибуну?

    @K1tekat Автор вопроса
    а как отследить поднятая ли у него рука?
  • Как создать текстовый канал и отправить туда сообщение?

    @K1tekat Автор вопроса
    мне нужно сообщение туда отправить, когда он создается
  • Как удалить голосовой канал с базы mongo?

    @K1tekat Автор вопроса
    Александр, а какой мне выставить тогда? чтобы он нашел его, если в монго он просто channel стоит
  • Как отформатировать миллисекунды на минуты, часы, дни?

    @K1tekat Автор вопроса
    и куда это засовывать? просто я видимо слишком туп для этого
  • Как сделать команду по выдаче роли в ds.js на время?

    @K1tekat Автор вопроса
    const config = require("./config.json")
    const { Client, Intents } = require('discord.js');
    const {Permissions} = require('discord.js');
    const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });
    
    client.on('ready', () => {
        console.log(`бот запущен`);
    });
    
    client.on('messageCreate', message => {
        if(!message.channel.permissionsFor(message.author).has(Permissions.FLAGS.MUTE_MEMBERS)) {
            return message.reply("У тебя не достаточно прав");
        };
    
        let array = message.content.split(" ");
        
        if (array[0] === "!mute") {
            let member = message.mentions.members.first() || message.guild.members.cache.get(array[1].replace(/[^\d]/g, ''));
            if(!array[1]) return message.reply("Укажи время");
              const reg = /^\d{1,99}(s|m|d|w)$/;
              const match = array[1].match(reg);
              if(!match) return message.reply("время не указано");
              const time = (+match[0].slice(0,-1))*(match[1]=="s"?1000:match[1]=="m"?1000*60:match[1]=="d"?1000*60*60*24:match[1]=="w"?1000*60*60*24*7:0);
    
            let role = message.guild.roles.cache.get("937251550840111105"); // или message.guild.roles.cache.get("937251550840111105"), если вы хотите обнаружить роль по её ID.
    
            member.roles.add(role).then((Member) => {
                setTimeout(() => {
                    Member.roles.remove(role);
                    message.reply(`Мут был снят с пользователя`);
                }, Number(array[2]));
            })
        }
    });
    
    client.login(config.token);

    я здесь пытался адекватно настроить время, чтобы по приписке выдавался мут на это время, например 1m-1 минута
    Но при вводе команды он просто пишет что не указанно время
    Даже при выставлении ее как дополнительного массива не помогает
  • Как сделать команду по выдаче роли в ds.js на время?

    @K1tekat Автор вопроса
    Александр,
    const Discord = require('discord.js'),
        config = require('./config.json');
    config.cfg.intents = new Discord.Intents(config.cfg.intents);
        
    const bot = new Discord.Client(config.cfg);
    bot.login(config.token);
    
    if (array[0] == '!role') {
      let member = message.mentions.members.first() || message.guild.members.cache.get(array[1])
    
    let role = message.guild.roles.cache.get(r => r.name === "937251550840111105"); // или message.guild.roles.cache.get("ID_роли"), если вы хотите обнаружить роль по её ID.
    
    let setTimeout() => {
            Member.roles.remove(role)
        }, array[2]);
    
    member.roles.add(role).then((Member) => {
        setTimeout(() => {
            Member.roles.remove(role)
        }, array[2]);
    })
    }

    получается вот так?
  • Как сделать команду по выдаче роли в ds.js на время?

    @K1tekat Автор вопроса
    Александр, а как подставить именно так, чтобы ты сам вводил не в коде?
  • Как сделать команду по выдаче роли в ds.js на время?

    @K1tekat Автор вопроса
    получается, что ты сам задаешь тайм?