Nodejs меняют псевдоним бота каждый раз при изменении переменной DISOCRD.JS

#node.js #discord.js

#node.js #discord.js

Вопрос:

Я делаю тикер доминирования для биткойнов, и я хочу показать цену в нике бота, дело в том, что я не знаю почему, но я не могу изменить ник, он выдает мне ошибку.

 const { Client } = require('discord.js');
const client = new Client();
const request = require("request");
var LastBitcoinDominance = 100;

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


myFunction()
function myFunction() {

    const url = "API";

    request(url, (err, res, body) => {
        const data = JSON.parse(body);


        var bitcoinDominance = data.bitcoin_dominance_percentage;

        if (bitcoinDominance == LastBitcoinDominance){
            console.log("Bitcoin dominance and LastBitcoinDominacne are the same")
        }else {
            client.user.setUsername(bitcoinDominance)
            LastBitcoinDominance = bitcoinDominance;
        }
    });

    setTimeout(myFunction, 10000);
}
client.login(TOKEN)
 

введите описание изображения здесь

Ответ №1:

Я думаю, это потому, что клиент не может быть обнаружен. Потому null что буквально ничего не значит.

Попробуйте использовать:

 client.login(TOKEN);
 

вместо:

 client.token(TOKEN);
 

Редактировать:

Попробуйте это:

 const { Client } = require('discord.js');
const client = new Client();
const request = require("request");
var LastBitcoinDominance = 100;

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


myFunction(client)
function myFunction(client) {

    const url = "API";

    request(url, (err, res, body) => {
        const data = JSON.parse(body);


        var bitcoinDominance = data.bitcoin_dominance_percentage;

        if (bitcoinDominance == LastBitcoinDominance){
            console.log("Bitcoin dominance and LastBitcoinDominacne are the same")
        }else {
            client.user.setUsername(bitcoinDominance);
            LastBitcoinDominance = bitcoinDominance;
        }
    });

    setTimeout(myFunction, 10000);
}
client.login(TOKEN)
 

Я добавил параметр в вашу функцию myFunction , потому что вы не можете использовать свой клиент внутри функции. Поэтому вы предоставляете его для параметра client . Внутри функции параметр client теперь является вашим клиентом, потому что вы его предоставили.

Комментарии:

1. Бот идеально входит в систему, потому что он включен на сервере, но он автоматически вылетает, когда бот меняет имя пользователя

2. @JuanBadal отредактировал мой ответ. Теперь должно сработать.

Ответ №2:

убедитесь, что у бота есть разрешения.
я попытался запустить это, и я не получил никаких ошибок: код

Комментарии:

1. На изображении это не похоже на проблему с разрешениями, в нем было бы сказано что-то о несанкционированных / недействительных разрешениях. В настоящее время он пытается использовать функцию, которая, вероятно, устарела в discord.js.org документы.

2. Проблема в том, что я также не могу изменить setPresence и для изменения setPresence мне не нужно никакого разрешения