discord.js отправляет запланированное сообщение пользователям с ролью - PullRequest
0 голосов
/ 05 марта 2019

Я делаю небольшое приложение для студентов-гидов, но сейчас я использую Discord в качестве держателя для приложения.

Я пытаюсь не отправлять запланированные сообщения, так как я использую node.scheduleдля этого я пытаюсь отправить запланированные личные сообщения каждому пользователю, который имеет определенную роль

    const botconfig = require('./botconfig.json');
const token = '*';
const Discord = require('discord.js');
const schedule = require('node-schedule');
const client = new Discord.Client();
var classA = '?';
var sumaryA = '?';
var profA = '?';

client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);



  var class8_30 = schedule.scheduleJob({hour: 8, minute: 30, dayOfWeek: 1}, function(){
    classA = 'English'; 
    client.users.get("500087456046120961").send("Class now");
  });

});

client.on('message', msg => {

  if (msg.content === 'ping') {
    msg.reply('pong');
  }

  if(msg.content.toLowerCase().startsWith('!myclassis')){
    var args = msg.content.toLowerCase().split(' ');
    console.log(args);
    if(args[1] === '10a'){
      var t10A = msg.guild.roles.find('name', 'Class_10A');
      msg.member.addRole(t10A.id);
      msg.channel.send('You\'re now part of class 10A');
    }
  }

  if (msg.content.toLowerCase() === "class"){
    let c10A = msg.guild.roles.find("name", "Class_10A");
    if (msg.member.roles.has(c10A.id)) 
        msg.author.send(aulaA);
  }

});

client.login(token);

У меня сейчас есть способ обмена сообщениями по идентификатору, который на самом деле не практичен и не «автоматический»Я посмотрел тонну видео, я прочитал документы, но не могу найти его, но уверен, что он существует. Я просто не знаю, как это сделать, и не могу найти, как это сделать.

Если бы кто-нибудь мог мне помочь, я был бы рад помощи и поблагодарил за потраченное на это время:)

1 Ответ

0 голосов
/ 05 марта 2019

Если я правильно понимаю ваш вопрос, вы можете решить его, сначала выбрав гильдию, в которой применяются роли.Тогда вы получите роль, откуда вам нужны пользователи.Затем вы получаете всех членов гильдии и отправляете сообщение каждому участнику.

Ниже вы можете найти пример того, как это может работать.Попробуйте сами и дайте мне знать, если у вас есть какие-либо проблемы.

client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);

  var class8_30 = schedule.scheduleJob({hour: 8, minute: 30, dayOfWeek: 1}, function(){
    let guild = client.guilds.find((guild) => guild.id === '<Guild ID here>');

    if (!guild) {
      // Guild can't be found
      return;
    }

    let role = guild.roles.find((role) => role.name === '<Role name here>');

    if (!role) {
      // Role can't be found
      return;
    }

    role.members.forEach((member) => {
      member.send('Class now!')
        // Should there be an error, log it to the console
        .catch(console.error);
    });
  });
});
...