[英]My code for autorole doesn't work and I can't figure out why
const { Client, Intents } = require("discord.js");
const client = new Client({
intents: ["DIRECT_MESSAGES", "GUILDS", "GUILD_MEMBERS"],
presence: {
status: "online",
activities: [{
name: "markets",
type: "WATCHING"
}]
},
});
client.on('ready', () => {
console.log(`Launched as a bot: ${client.user.tag}!`);
});
client.on('guildMemberAdd', member => {
function roleAdd() {
member.roles.add(member.guild.roles.cache.get(process.env.SERVER_ROLE_ID));
}
roleAdd();
});
client.login(process.env.DJS_TOKEN);
伙計們,我寫了這段代碼,但它不起作用。 我沒有收到任何錯誤。 我希望它在用戶加入我的服務器時添加一個角色。 機器人的狀態正在工作。 我認為問題出在guildMemberAdd
部分。
我不太確定為什么要為此使用嵌套函數的方法。 如果您希望事件調用 function,請將 function 移到事件之外,然后在參數中創建GuildMember
。
或者完全丟棄事件並單獨保留普通的#<GuildMemberRoleManager>.add
方法。
我建議后者,因為我假設嵌套的 function 聲明不會起作用。
如果你想為你的服務器使用自動角色添加,請嘗試最簡單的方法來添加角色,就像給成員賦予角色一樣
當您為特定成員賦予角色時,應該如下所示:
const role = message.guild.roles.cache.find(role => role.id === process.env.SERVER_ROLE_ID)
const target = message.mentions.members.first() || await message.guild.members.cache.get(args[0])
如果 bot 給出的角色higher than the bot or equal to bot
。 您將收到諸如“缺少權限”之類的錯誤。為防止出現這種情況,您需要輸入代碼以將其返回
if(!target.moderatable) return message.reply("I can't mute this person!")
此命令與自動賦予角色的方式相同,只是添加/編輯/刪除了幾行代碼。
client.on('guildMemberAdd', member => {
function roleAdd() {
member.roles.add(member.guild.roles.cache.get(process.env.SERVER_ROLE_ID));
}
roleAdd();
});
- function roleAdd() {}
+ let role = member.guild.roles.cache.find(role => role.id == process.env.SERVER_ROLE_ID)
+ member.roles.add(role).catch()
.catch()
行是為了防止出錯並關閉你的機器人。
client.on('guildMemberAdd', member => {
let role = member.guild.roles.cache.find(role => role.id == process.env.SERVER_ROLE_ID)
member.roles.add(role).catch()
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.