Discord.js V13 使用斜线命令时添加角色

Posted

技术标签:

【中文标题】Discord.js V13 使用斜线命令时添加角色【英文标题】:Discord.js V13 Adding role when using a slash command 【发布时间】:2021-11-03 12:24:27 【问题描述】:

我正在尝试编写一个机器人,当你使用某个斜杠命令时,它会给你一个角色。我一直在寻找解决方案,但一直找不到。似乎没有什么对我有用,我不断收到有关代码的错误,例如“找不到消息,你的意思是消息吗”

这是我第一次尝试编写机器人代码,所以如果这是一个愚蠢的问题,请多多包涵。

这是我的代码:

import DiscordJS,  Intents, Message, Role  from 'discord.js'
import dotenv from 'dotenv'
dotenv.config()

const client = new DiscordJS.Client(
intents: [
  Intents.FLAGS.GUILDS,
  Intents.FLAGS.GUILD_MESSAGES
],
)

// Slash Commands

//ping pong command

client.on('ready', () => 
console.log('BOT ONLINE')

//bot test server
const guildId = '868857440089804870'
const guild = client.guilds.cache.get(guildId)
const role = client.guilds.cache.find(r => r.name == "Test Role to 
give")

let commands




if (guild) 
  commands = guild.commands
 else 
  commands = client.application?.commands





commands?.create(
  name: 'ping',
  description: 'says pong'
)


commands?.create(
  name: "serverip",
  description: 'Gives user the server IP'
)

commands?.create(
  name: "giverole",
  description: 'Gives user the role'
)


)

client.on('interactionCreate', async (interaction) => 
if(!interaction.isCommand()) 
  return


const  commandName, options  = interaction
//This is the role id that i want to give
const role = '884231659552116776'
//these are the users that i want to give the role to
const sniper = '725867136232456302'
const josh = '311981346161426433'

if (commandName === 'ping') 
  interaction.reply(
    content: 'pong',
    ephemeral: true,
  )
 else if (commandName === 'serverip') 
interaction.reply(
  content: 'thisisserverip.lol',
  ephemeral: true,
 )
 else if (commandName === 'giverole') 
  interaction.reply(
    content: 'Role given',
    ephemeral: true,
    
   )
  
 )

 client.login(process.env.test)

【问题讨论】:

您好,欢迎 :D 很抱歉,这不是我们为您编写代码的地方。我们可以帮助您找到现有代码中的错误,但您必须尝试自己实现您的想法^^ 我编辑它现在有我的代码 【参考方案1】:

您只需检索Interaction#Member 并使用GuildMemberRoleManager#add 方法将角色添加到它们!

const role = client.guilds.cache.find(r => r.name == "Test Role to 
give");

await interaction.member.roles.add(role); // and you're all set! welcome to *** ?

【讨论】:

当我把它放进去时,它给了我这些错误:没有重载匹配这个调用。 ',' 预期 我把“interaction.member.roles.add(role);”放在一起重要吗?在 if 语句中? 不应该,也许可以尝试从 discord.js 导入 GuildMember 这样,对吧?从“discord.js”导入 GuildMember 正确让我知道是否可以解决问题

以上是关于Discord.js V13 使用斜线命令时添加角色的主要内容,如果未能解决你的问题,请参考以下文章

斜杠命令处理程序中的 Discord.js v13 TypeError

如何将斜杠命令隐藏到特定用户或频道 Discord.js v13

Discord.js 无法为斜线命令添加选项

Discord.js v13:斜杠命令重复

Discord.js v13,@discordjs/voice 播放音乐命令

如何在嵌入 discord.js V13 时使用下载的图像