当另一个角色被删除时,Discord 角色机器人会给予角色

问题描述 投票:0回答:1

我很好奇是否可以创建一个使用斜杠命令(

/addrole
/removerole
等)管理角色的不和谐机器人,并且当使用
/removerole
时,它会向成员(角色已被删除) )另一个临时角色(它会保留一段时间,然后自动删除)。我不太喜欢discord.js,所以我很好奇它是否可能。

预期用途:

/addrole <role> <user>
-> 给出指定的角色
/removerole <role> <user>
-> 删除指定角色,并赋予临时角色 7 天。

discord discord.js bots
1个回答
0
投票

似乎有可能,但如果您不想让事情变得复杂,您需要保持服务器打开,直到机器人删除该角色或角色将保留(除非您添加诸如删除角色的日期之类的内容,但是这可能会让事情变得复杂): 以下是临时角色的一些演示:

if (commandName === 'addrole') {
        let role = interaction.guild.roles.cache.find(r => r.name === interaction.options.getString('role'));
        let member = interaction.guild.members.cache.get(interaction.options.getUser('user').id);
        await member.roles.add(role);
        await interaction.reply(`Role ${role.name} added to ${member.user.tag}`); //This is to announce the role adding part
    } else if (commandName === 'removerole') {
        let role = interaction.guild.roles.cache.find(r => r.name === interaction.options.getString('role'));
        let member = interaction.guild.members.cache.get(interaction.options.getUser('user').id);
        await member.roles.remove(role); //This removes the first role
        let tempRole = interaction.guild.roles.cache.find(r => r.name === "Temporary"); //And this gives the temporary role
        await member.roles.add(tempRole);
        await interaction.reply(`Role ${role.name} removed from ${member.user.tag} and temporary role added`); //This is to announce the role removing part
        setTimeout(async () => {
            await member.roles.remove(tempRole); //This sets time for the role removal.
        }, 7 * 24 * 60 * 60 * 1000); // This means seven days (We multiplied miliseconds to get to days)

但是我给出的一些代码可能是错误的,因为discord.js 发生了变化,并且我从旧的discord 机器人中获取了这段代码。

© www.soinside.com 2019 - 2024. All rights reserved.