• Как сделать выдачу роли на сервере при написании боту в лс?

    @qwikman1 Автор вопроса
    Александр, ползунок был выключен, когда включил ничего не изменилось. Зашёл на https://support.discord.com/hc/en-us/articles/3600... intents.png
    Там нужно было включить два ползунка, после чего всё заработало. Спасибо за помощь
  • Как сделать выдачу роли на сервере при написании боту в лс?

    @qwikman1 Автор вопроса
    const Discord = require('discord.js');
    const random = require('random');
    const fs = require('fs').promises
    let {token} = require('./config.json');
    var EmSet = require('./Setting/setEm.json')
    const client = new Discord.Client({disableEveryone: false});
    let {Chan_Set} = require('./config.json');
    let {Chat_Activate} = require('./config.json');
    let {Guild} = require('./config.json');
    let {Promo_Ch} = require('./config.json');
    
    client.on('message', async message => {
     if ((message.content.startsWith("!pc")) & ((message.channel.type === "dm"))) {
                let promo = await fs.readFile('promo.json', 'utf8');
                let promoObject = JSON.parse(promo);
                let xpFile = await fs.readFile('userxp.json', 'utf8');
                let xpObject = JSON.parse(xpFile);
                let Tmsg = message.content.replace(/\s+/g, ' ').trim()
                let msg = Tmsg.split(" ")
                let Checker = false
    
                if (promoObject.hasOwnProperty(msg[1])) {
                    let date = Date()
                    if ((promoObject[msg[1]]["Type"] == "Role") & (Date.parse(date) < promoObject[msg[1]]["To_Time"]) & (!Checker)) {
                        //message.guild.members.cache.get(message.author.id).roles.add(promoObject[msg[1]]["Role_ID"]);
                        let role = client.guilds.cache.get("815595205733515274").roles.cache.get("815975903427035208")
                        client.guilds.cache.get("815595205733515274")
                            .members.cache.get(message.author.id)
                            .roles.add(role)
    
                        message.channel.send("Всё прошло успешно, с обновлением :3")
                        if (promoObject[msg[1]]["activation"] > 0) {
                            promoObject[msg[1]]["activation"] -= 1;
                        } else promoObject[msg[1]] = null
                        Checker = true
                    } //else message.channel.send("Недествительный промокод")
                    if (promoObject.hasOwnProperty(msg[1]))
                        if ((promoObject[msg[1]]["Type"] == "ExCode") & (Date.parse(date) < promoObject[msg[1]]["To_Time"]) & (!Checker)) {
                            xpObject[message.author.id][Guild]["userXP"] += xpFile[msg[1]["Ex_Add"]]
                            message.channel.send("Всё прошло успешно, с обновлением :3")
                            if (promoObject[msg[1]]["activation"] > 0) {
                                promoObject[msg[1]]["activation"] -= 1;
                            } else promoObject[msg[1]] = null
                            Checker = true
                        } //else message.channel.send("Недествительный промокод")
                } else message.channel.send("Недествительный промокод")
    
                await fs.writeFile('userxp.json', JSON.stringify(xpObject, null, 4),
                    'utf8').catch(err => console.log(err))
    
                await fs.writeFile('promo.json', JSON.stringify(promoObject, null, 4),
                    'utf8').catch(err => console.log(err))
            }
    }

    Попробовал напрямую вписать строку роли и гильдии, но по прежнему ошибка
    .roles.add(role)
    ^
    TypeError: Cannot read property 'roles' of undefined
    Есть ещё код, но он не имеет отношение к данной функции(если нужно могу скинуть)
  • Как сделать выдачу роли на сервере при написании боту в лс?

    @qwikman1 Автор вопроса
    Спасибо что объяснили)
    Сделал так, но снова ошибка
    let role = client.guilds.cache.get("815595205733515274").roles.cache.get(promoObject[msg[1]]["Role_ID"])
                        client.guilds.cache.get("815595205733515274")
                            .members.cache.get(message.author.id)
                            .roles.add(role)


    .roles.add(role)
    ^
    TypeError: Cannot read property 'roles' of undefined
  • Как сделать выдачу роли на сервере при написании боту в лс?

    @qwikman1 Автор вопроса
    Почему-то не получается

    let role = client.guilds.cache.get("815595205733515274").roles.cache.find.get(promoObject[msg[1]]["Role_ID"])
                        client.guilds.cache.get("815595205733515274")
                            .members.cache.get(message.author.id)
                            .roles.add(role)

    Выдаёт ошибку TypeError: client.guilds.cache.get(...).roles.cache.find.get is not a function
    У меня есть Id роли изначально
    Пробовал подставить Id роли сразу во вторую строчку, но безуспешно

    .roles.add(promoObject[msg[1]]["Role_ID"])
    TypeError: Cannot read property 'roles' of undefined