我对 JS 还很陌生,为了学习,我决定为 Discord 制作一个机器人,我学到了很多东西,并且还在继续学习.我有一个自动角色"的想法.我知道传统的做法.
I am fairly new to JS, and to learn I decided to make a bot for Discord, I have learned a lot and am continuing to learn. I had the idea for an "autorole". I know the conventional way of doing it.
bot.on('guildMemberAdd', member => {
var role = member.guild.roles.find('name', 'Member');
member.addRole(role);
});
但是,我希望它从 .json 文件中获取角色.其余代码都很好,我可以使用 >autorole Role 写入 json.我只是不确定如何将 json 合并到 member.addRole(role).
However, I want it to get the role from a .json file. The rest of the code is fine, I can write to the json with >autorole Role. I am just unsure on how to incorporate the json into the member.addRole(role).
我的 json 看起来像这样:
My json looks like this:
{
"505107608391254026": {
"role": "Staff"
}
}
我尝试过并且认为可行的方法如下.请记住,在有人决定将我列入尝试学习和失败的名单之前,我还是个新手.
What I tried, and thought would work is the following. Please remember I am very new before someone decides to slate me for trying to learn and failing.
首先我尝试了这个:
let auto = JSON.parse(fs.readFileSync("./Storage/autorole.json", "utf8"));
bot.on('guildMemberAdd', member => {
var role = member.guild.roles.find('name', auto.role);
member.addRole(role);
});
失败后,我尝试了这个.
After that failed, I tried this.
let auto = JSON.parse(fs.readFileSync("./Storage/autorole.json", "utf8"));
bot.on('guildMemberAdd', member => {
var role = auto.role;
member.addRole(role);
});
我在我的 discord 机器人中使用了相同的方法.根据您的代码,您可以在 json 文件中的不和谐 ID 下列出每个用户的角色.
I am using the same method in my discord bot. From what I can tell by your code, you have roles for each user listed under their discord ids in your json file.
我没有意识到那是公会 ID.我已更改以下代码以适应它.
I didn't realize that was the guild ID. I have changed the below code to accommodate that.
如果您还没有将文件定义为可用变量,那么您首先需要:
You will want to start out by defining your file as a usable variable if you haven't already:
var jsonPath = 'path to json here';
var jsonRead = fs.readFileSync(jsonPath);
var jsonFile = JSON.parse(jsonRead);
接下来,在 json 文件中定义公会的 id:
Next, define the guild's id in the json file:
bot.on('guildMemberAdd', member => {
var guildId = member.guild.id;
let autoRole = jsonFile[guildId]
})
既然已经完成了,我们现在可以将我们想要赋予的角色定义为 autoRole.role
Since that is done, we can now define the role we want to give as autoRole.role
我的完整代码是:
var jsonPath = 'path to json here';
var jsonRead = fs.readFileSync(jsonPath);
var jsonFile = JSON.parse(jsonRead);
bot.on('guildMemberAdd', member => {
var guildId = member.guild.id;
let autoRole = jsonFile[guildId]
let myRole = member.guild.roles.find(role => role.name === autoRole.role);
member.addRole(myRole)
})
为了帮助您在评论中提出问题,您可以添加 if (!jsonFile[guildId]) 和 else 语句.换句话说,如果您的对象不存在,请执行此操作.
To help with what you asked in your comment, you could add if (!jsonFile[guildId]) with an else statement. In other words, if your object doesn't exist, do this.
代码:
var jsonPath = 'path to json here';
var jsonRead = fs.readFileSync(jsonPath);
var jsonFile = JSON.parse(jsonRead);
bot.on('guildMemberAdd', member => {
var guildId = member.guild.id;
if (!jsonFile[guildId]) {
console.log('Role could not be found')
} else {
let autoRole = jsonFile[guildId]
let myRole = member.guild.roles.find(role => role.name === autoRole.role);
member.addRole(myRole)
}
})
这篇关于在从 json 文件加入时添加角色(自动角色)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
discord.js v12:我如何等待 DM 频道中的消息?discord.js v12: How do I await for messages in a DM channel?(discord.js v12:我如何等待 DM 频道中的消息?)
如何让我的机器人提及发出该机器人命令的人how to make my bot mention the person who gave that bot command(如何让我的机器人提及发出该机器人命令的人)
如何修复必须使用导入来加载 ES 模块 discord.jsHow to fix Must use import to load ES Module discord.js(如何修复必须使用导入来加载 ES 模块 discord.js)
如何列出来自特定服务器的所有成员?How to list all members from a specific server?(如何列出来自特定服务器的所有成员?)
Discord bot:修复“找不到 FFMPEG"Discord bot: Fix ‘FFMPEG not found’(Discord bot:修复“找不到 FFMPEG)
使用 discord.js 加入 discord 服务器时的欢迎消息Welcome message when joining discord Server using discord.js(使用 discord.js 加入 discord 服务器时的欢迎消息)