- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我所在的服务器创建一个 discord.js
机器人,但在尝试向用户(刚刚被踢出,通知他们)发送 DM 之后,该机器人根本不会发送它,它会吐出一个错误,
"UnhandledPromiseRejectionWarning: DiscordAPIError: Cannot send messages to this user"
它现在失控了,因为它会起作用,我会添加一个小东西,它会停止工作(或多或少是预期的),然后当我恢复该添加时,它会再次吐出错误。
这是我的踢命令代码
const Discord = require("discord.js");
const Client = new Discord.Client
const prefix = "m!"
module.exports.run = async(bot, message, args) => {
params = message.content.slice(prefix.length).trim().split(/ +/g);
command = args.shift().toLowerCase();
let memberKick = message.mentions.members.first();
let reasonKick = args.slice(1).join(" ");
if(message.member.roles.find("name", "MedaFrost Controller")) {
var userReslv = message.guild.members.find("id", memberKick.id);
let usericon = memberKick.displayAvatarURL;
let botembed = new Discord.RichEmbed
botembed.setDescription("❌ You Were Kicked From Roscord!");
botembed.setColor("FF0000");
botembed.setThumbnail(usericon);
botembed.addField("Reason:", `${reasonKick}`);
userReslv.send(botembed);
memberKick.kick(reasonKick);
message.channel.send("✅ " + `${memberKick}` + " was kicked! ✅")
} else {
const userId = message.member.id
message.channel.send("Sorry, " + `<@${userId}>` + ", but you do not have sufficient permissions!")
}
}
module.exports.help = {
name: "kickplayer",
description: "Kicks mentioned user."
}
(证明表情符号不是问题) Link to image :
最佳答案
您不应该不使用延迟或计时器来解决此问题。 Discord.js 中的异步调用返回 Promise,您应该使用这些 Promise。
Promise 基本上可以将异步工作流程转为同步:当发生某些事情时 -> 执行此操作。
这是工作流程:
别担心,他们没有时间对消息使用react,因为借助 Promise,这些操作很可能会立即发生。没有额外的延迟。
所以基本上:
GuildMember
.createDM()
.then((DMChannel) => {
// We have now a channel ready.
// Send the message.
DMChannel
.send(reason)
.then(() => {
// Message sent, time to kick.
GuildMember.kick(reason);
});
});
Here's the referenced GuildMember
你也可以捕获,而且你应该捕获。当 Promise 无法执行分配给它的任务时,就会发生捕获。
GuildMember
.createDM()
.then((DMChannel) => {
// We have now a channel ready.
// Send the message.
DMChannel
.send(reason)
.then(() => {
// Message sent, time to kick.
GuildMember
.kick(reason)
.catch((e) => {
console.log('Failed to kick!', e);
// Do something else instead...
});
});
});
(您也可以捕获消息发送,或创建 channel 。)
在这里您可以了解有关 Promise 的更多信息,它是 JavaScript 的重要组成部分:https://javascript.info/promise-basics
关于javascript - Discordjs - 无法向该用户发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51407473/
这个问题在这里已经有了答案: None of my discord.js guildmember events are emitting, my user caches are basically e
我想让嵌入消息像普通的音乐机器人一样,带有链接的嵌入消息可以点击 我希望我的内容是描述,突出显示是附加到它的链接,就像图片一样。这是我的嵌入 这是我的代码 if (command === 'test'
我正在不和谐上制作一个机器人,将来我会添加更多命令,我只是不明白参数的使用以及如果有像“;说一般( channel )嗨伙计们,我是一条文本(要发送的文本)”这样的空格,它会如何工作。它只会向将军发送
我试图让 Discord 机器人在收到 !getdata 命令时创建一个基本上是用户映射的数据库(每个用户一行,ID、昵称、头像 URL 等列)。 我已经到了数据库成功获取数据的地步,在本例中是用户名
client.on('guildMemberAdd', guildMemberAdd => { console.log("Guild Member joined"); }); 我知道我有一些菜鸟错
我的 DiscordJS 机器人有一个命令,其中包含一组 Imgur 链接。我希望它随机选择一个链接并将其嵌入到 channel 的消息中。我想我很接近。我如何从数组中调用它? if (command
我正在为我所在的服务器创建一个 discord.js 机器人,但在尝试向用户(刚刚被踢出,通知他们)发送 DM 之后,该机器人根本不会发送它,它会吐出一个错误, "UnhandledPromiseRe
所以我使用 discord.js v11.2.1 来编辑消息,但我无法简单地弄清楚。我正在尝试从不同的 channel 编辑消息,并且我正在使用 TextChannel 到 fetchMessage(
我的主要目标是能够运行一个小命令,如 $yoink ,这将采用聊天中最后发送的表情符号并将其制作成我可以下载的图像。我已经有了这样的东西,但是,它只检测常规图像和嵌入图像(使用它来使我的机器人具有 J
我不知道如何使用 DiscordJs 对 :one: Emoji 使用react。 通常在 Emoji 前面放置一个转义符\会为您提供 Emoji 的 ID,但使用\发生 与 :one: 或 one
我只想单独获取计数值,而不必与循环进行卷积。我相信这非常简单,但我所有常用的方法都让我被图书馆拒绝。 // Get our server const guild = bot.guilds.get('3
好吧,我的问题是,在第一组 console.log(streamXXXX) 中,其中 XXXX 是各种变量,当我读取它们的值时,它们都按应有的方式读取,而在第二组他们读作未定义。这是范围问题吗?也许是
我目前正在为我的机器人使用 Discord.js 和 Node,它以设定的时间间隔发送附件。我遇到了一个问题,有时附件没有完全加载(它们无限期地加载,只有当我点击“打开原件”时,我才能看到图像的前几个
我正在为我们的文本聊天 channel 开发一个表情机器人。我有这样的工作。目标是如果用户输入如下内容: ~拥抱@user 机器人会清理消息,将其删除,然后向聊天室发送表情: |乔拥抱简。哇! 这是有
我的代码: const Discord = require("discord.js"); module.exports.run = async (bot, message, args) => {
我的代码运行良好,我只需要检查用户是否具有角色,它会记录所有用户及其 ID、鉴别器和用户名 exc。我只是无法获得角色。各位可以帮忙吗? client.on('ready', () => { co
我想更新已发布嵌入的字段: message.embeds[0].fields[0] = "New content"; 但是嵌入消息没有更新。 我已尝试更新消息: function doAfakeEdi
因此在 discordjs 指南中显示您可以在斜杠命令中添加选项。但是没有函数说明如何在交互中获取选中的选项。 这是来自 discordjs.guide 的示例: 但是没有说明如何在交互中调用他们或回
我想在成员加入服务器时添加一个角色,但它说我没有那个权限。如何为机器人添加所有意图/权限? 我将只留下代码的开头。 // Require the necessary discord.js classe
我正在使用 DiscordJs V12.3.1,我正在尝试返回对旧消息使用react的用户列表。 (在机器人启动之前创建的)。 在我当前的实现中,我通过 ID 获取消息,映射所有反应,然后获取 rea
我是一名优秀的程序员,十分优秀!