[英]Bot doesn't add message member to the channel - Discord.JS
所以,我目前正在為我的機器人開發一個“臨時通道”模塊。 當某個等級的用戶執行!newvc
時,機器人會創建一個他們可以使用、添加人員的私人語音頻道,當所有人離開時,它會在一段時間后自動刪除。
一切正常,但我注意到一個錯誤,我找不到它發生的原因。 基本上,當您第一次使用該命令時,一切正常,頻道已創建,您被添加並移至類別。 但是,如果您再次使用它,假設一分鍾后您不會被添加。 該頻道已制作,設置為私人,但您的message.member沒有被添加。 然后它又做了又不做,你明白了嗎?
老實說,我找不到它這樣做的原因,我唯一能想到的就是與 Discord 的 API 有關。
這是我的代碼
let member = message.member
user = member.user
message.delete()
message.guild.createChannel(`⭐${member.user.username}'s Room`, 'voice', [{
id: message.guild.id,
deny: ['CONNECT', 'SPEAK', 'PRIORITY_SPEAKER']
}]).then(channel => {
channel.overwritePermissions(member, {
CONNECT: true,
USE_VAD: true,
PRIORITY_SPEAKER: true
})
channel.setParent('567718414454358026')
})
let privatevc = new Discord.RichEmbed()
.setDescription(':white_check_mark: Successfully created a voice channel!')
.setColor(config.green)
message.channel.send({ embed: privatevc }).then(msg => msg.delete(10000))
僅供參考:我的 Discord.JS 版本是 11.4(由於工作沒時間更新)
首先,前兩行應更改為:
let member = message.member,
user = message.author;
// or
const { member, author: user } = message;
雖然這不是問題,但在嚴格模式下會導致錯誤,因為從技術上講,您在user = member.user
前面沒有變量關鍵字。 如果您不打算更改變量的值,則應該嘗試使用 const。 請注意, message.author
與message.member.user
相同。
其次,不推薦在Guild#createChannel
中使用permissionOverwrites
參數(參見https://discord.js.org/#/docs/main/v11/class/Guild?scrollTo=createChannel )。 我知道 Discord.JS 已經廢除了許多東西,盡管他們說“已棄用”。 嘗試使用typeOrOptions
參數來創建具有適當覆蓋的通道。 這是我建議的代碼:
(async () => {
message.delete();
message.guild.createChannel(`⭐ ${message.author.username}'s Room`, {
type: 'voice',
parent: '567718414454358026',
permissionOverwrites: [{
id: message.guild.id, // @everyone has the ID of the guild
deny: ['VIEW_CHANNEL', 'CONNECT'],
}, {
id: message.author.id, // attach the permission overrides for the user directly here
allow: ['VIEW_CHANNEL', 'CONNECT', 'USE_VAD', 'PRIORITY_SPEAKER']
}]
});
const embed = new Discord.RichEmbed()
.setDescription(':white_check_mark: Successfully created a voice channel!')
.setColor(config.green);
const sentMessage = await message.channel.send(embed);
sentMessage.delete(10 * 1000);
})();
我發現了這個問題。 基本上,因為用戶是在創建頻道后添加的,所以 Discord API 正在失去它(或者什么,這些只是我的猜測)。
改成這樣后:
message.guild.createChannel(`⭐${member.user.username}'s Room`, 'voice', [{
id: message.guild.id,
deny: ['CONNECT', 'SPEAK', 'PRIORITY_SPEAKER']
}, {
id: message.author.id,
allow: ['CONNECT', 'SPEAK', 'PRIORITY_SPEAKER']
}])
一切都恢復正常。 謝謝 PiggyPlex。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.