Как заставить Webhook говорить (петлю) через бот Discord - PullRequest
1 голос
/ 16 марта 2019

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

const Discord = require('discord.js');
const commando = require('discord.js-commando');

class pingy extends commando.Command 
{
    constructor(client) {
        super(client, {
            name: 'pinghook',
            group: 'help',
            memberName: 'pinghook',
            description: 'git',
        })
    }
async run(message, args){

var args = Array.prototype.slice.call(arguments);

const nameAvatar = args.join(" ");
const linkCheck = /https?:\/\/.+\.(?:png|jpg|jpeg)/gi;
if (!linkCheck.test(nameAvatar)) return message.reply("You must supply an image link.");
const avatar = nameAvatar.match(linkCheck)[0];
const name = nameAvatar.replace(linkCheck, "");
const name2 = "PingBot";
message.channel.createWebhook(name, avatar)
.then(webhook => webhook.edit(name2, avatar)
    .catch(error => console.log(error)))
  .then(wb => hook
    .catch(error => console.log(error)))
  .catch(error => console.log(error));
const hook = new Discord.WebhookClient(wb.id, wb.token)

setInterval(() => {
    hook.send("@everyone you've been pinged.")
}, 1500);

}};
module.exports = pingy;

Вот некоторые ошибки, которые я получил при попытке закодировать это.ReferenceError: wb is not defined

Что я ожидаю: Мой бот может создать активированный пользователем веб-крючок, затем веб-крючок отправляет сообщение с интервалом, пока не будет удален.Для этого получите webhook.id и webhook.token из недавно созданного webhook.

Реальность: ReferenceError: wb is not defined

1 Ответ

1 голос
/ 17 марта 2019

Вместо

message.channel.createWebhook(name, avatar)
.then(webhook => webhook.edit(name2, avatar)
    .catch(error => console.log(error)))
  .then(wb => hook
    .catch(error => console.log(error)))
  .catch(error => console.log(error));
const hook = new Discord.WebhookClient(wb.id, wb.token)

setInterval(() => {
    hook.send("@everyone you've been pinged.")
}, 1500);

Вы можете сделать его намного чище и проще, используя async / await, например:

const hook = await message.channel.createWebhook(name, avatar).catch(error => console.log(error))
await hook.edit(name2, avatar).catch(error => console.log(error))

setInterval(() => {
    hook.send("@everyone you've been pinged.")
}, 1500);
...