LovesickDev
LovesickDev

Reputation: 63

Call a user directly using Eris

I am trying to make a bot with Eris and I need it to be able to call people in direct messaging. This is what I came up with, but clearly, I'm missing something as it does not work.

                        if (contacts[name].dm) {
                            const channel = await bot.getDMChannel(contacts[name].id)
                            await channel.ring([contacts[name].id])
                        }else{
                            bot.joinVoiceChannel(contacts[name].id)
                        }

Upvotes: 0

Views: 357

Answers (1)

LovesickDev
LovesickDev

Reputation: 63

Might not be the most effective or clean way to do it, but I managed.

function discordAPI(authToken,apiEndpoint,JSONparams,type="GET") {
    var xhr=new XMLHttpRequest()
    console.log("Connecting to https://discord.com/api/v9"+apiEndpoint)
    xhr.open(type,"https://discord.com/api/v9"+apiEndpoint,true)
    xhr.setRequestHeader('Content-Type','application/json')
    xhr.setRequestHeader('Authorization',authToken)
    console.log(authToken)
    xhr.onload = function () {
        console.log('DONE: ', xhr.status);
        console.log('REPONSE: ', xhr.reponseText);
        // console.log('=======================');
        // console.log('REPONSE_HEADERS:\n', xhr.getAllResponseHeaders());
        // console.log('=======================')
      };
    xhr.send(JSON.stringify(JSONparams))
}

//...

const channel = await bot.getDMChannel(id)
await sleep(time*1000)
discordAPI(bot.token, ('/channels/' + channel.id + '/call/ring'), '', 'POST')
bot.joinVoiceChannel(channel.id).then((vconnect) => { //THIS IS NECESSARY TO JOIN THE CALL!!
    console.log(vconnect)
    if(sf!='null'){vconnect.play(__dirname + "/../sfx/" + sf + ".mp3")}
    vconnect.once("userDisconnect", () => { if(userID == id){bot.switchChannel(null)} });
    vconnect.once("end", () => { bot.switchChannel(null) });
    vconnect.once("error", () => { console.log("----\n"+Error.toString()+"----\n") });
})
await sleep(timespent*60*1000)
bot.disconnect()
console.log('Called.')
bot.connect()

Upvotes: 1

Related Questions