不和谐机器人日志

时间:2020-09-23 02:02:25

标签: javascript logging discord.js bots

因此,我创建了一个discord.js机器人并将以下内容添加到index.js:

client.on("guildCreate", guild = {
    const logsServerJoin = client.channels.get('757945781352136794');
    console.log(`The bot just joined to ${guild.name}, Owned by ${guild.owner.user.tag}`);
    client.channels.cache.get('channel id paste here').send(`The bot just joined to ${guild.name}, Owned by ${guild.owner.user.tag}`);

    var guildMSG = guild.channels.find('name', 'general');

    if (guildMSG) {
        guildMSG.send(` Hello there! My original name is \`Bryant\`!\n\ This bot created by **R 1 J 4 N#7686**\n\ For more info
       type \`/help\`!\n\ \`Bryant - Official Server:\`
       https://discord.gg/UsQFpzy`);
    } else {
        return;
    }
});

// Logs of the bot leaves a server and changed the game of the bot
client.on("guildDelete", guild = {
    client.channels.cache.get('757945781352136794').send(`The bot just
       left ${guild.name}, Owned by ${guild.owner.user.tag}`);
    console.log(`The bot has been left ${guild.name}, Owned by ${guild.owner.user.tag}`);
    logsServerLeave.send(`The bot has been left ${guild.name}, Owned by ${guild.owner.user.tag}`);
});

它在终端上没有显示任何错误。应该让我记录一下该机器人在提到的频道中加入并离开的位置,但是没有?‍♂️。有人可以帮我吗?

3 个答案:

答案 0 :(得分:0)

如果在控制台中没有控制台日志,也没有消息/错误消息告诉您找不到该频道,则问题很可能与您注册事件的方式有关,请确保'List of PPT Slides to Paste to For i = 2 To 40 MySlideArray = Array(i) Next i 'List of Excel Ranges to Copy from For J = 7 To 45 MyRangeArray = Array(Sheets(J).Range("A1:K39")) Next J 是discord.js客户端的一个实例,下面是一个最小的工作示例

client

答案 1 :(得分:0)

如果您尝试从您的家庭不和谐服务器中获取机器人提醒您的日志,您可以通过多种方式执行此操作:从缓存中获取频道、构建频道或使用网络钩子。目前您正在尝试从缓存中获取频道。虽然是一个不错的解决方案,但在以后使用分片时它可能会失败。我个人更喜欢 webhooks,因为它们是最简单和最孤立的。

来自缓存的通道

这种技术与您的做法非常相似。

const channel = client.channels.cache.get('757945781352136794')
channel.send('An Event occurred')

只需将此代码放在您想要记录某些内容的任何位置即可。

渠道建设

const guild = new Discord.Guild(client, { id: '757945781352136794' });
const channel = new Discord.TextChannel(guild, { id: '757945781352136794' });
channel.send('An Event occurred')

此方法类似于从缓存中获取频道,但它会更快,因为您正在构建您的主公会和频道,然后将其发送给它。请注意,您需要一个可以从 message.client

获得的客户

网络钩子

我最喜欢的方法使用网络钩子。我建议您阅读 DiscordDiscord.js

中的 discord webhooks 如何工作

您还需要创建一个网络钩子。这很容易。进入您希望将 webhook 发送到的频道,然后转到集成并创建一个新的 webhook。您可以根据需要更改名称和个人资料,但请复制网址,它应该如下所示:

https://discord.com/api/webhooks/757945781352136794/OkMsuUHwdStR90k7hrfEi5*********

路径的最后一部分是 webhook 令牌,前一位是通道 ID

我建议您创建一个可以像这样调用的辅助函数:

sendWebhook('An event occurred');

然后写函数创建然后发送到webhook

function sendWebhook(text) {
    const webhook = new Discord.WebhookClient('757945781352136794', 'OkMsuUHwdStR90k7hrfEi5*********');
    webhook.send(text);
    webhook.destroy();
}

这不会很动态,改变频道会很痛苦,但对于不断记录(如公会加入和离开)我认为这是最好的解决方案

答案 2 :(得分:0)

问题可能是您没有启用“特权网关意图”。要打开它们,请转到 https://discord.com/developers,单击您的应用程序,然后单击“Bot”,然后向下滚动并启用“PRESENCE INTENT”和“SERVER MEMBERS INTENT”并保存。它现在应该对你有用。