如何让discord.js机器人生成其所在Discord服务器的邀请链接?
解决方案
只要你的机器人仍留存于目标Discord服务器、且持有创建即时邀请的权限,就可以生成有效邀请链接。由于你当前无法进入服务器发送指令触发机器人逻辑,直接把邀请生成逻辑写在ready事件中,机器人启动后会自动执行生成操作,不需要额外交互,适配你当前使用的discord.js v13版本的完整代码如下:
const { Client, Intents } = require('discord.js') const { prefix, token } = require("./config.json"); const ytdl = require("ytdl-core"); const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES]}) client.on('ready', async () => { console.log(client.user.tag + " 已上线") // 遍历机器人所在的所有服务器生成邀请 client.guilds.cache.forEach(async guild => { // 如果你知道目标服务器ID,可解开下面注释,替换成对应ID后只会生成目标服务器的邀请 // if(guild.id !== '替换为你的目标服务器ID') return try { // 筛选机器人有权限创建邀请的第一个文字频道 const validChannel = guild.channels.cache.find(channel => channel.type === 'GUILD_TEXT' && channel.permissionsFor(guild.me).has('CREATE_INSTANT_INVITE') ) if(!validChannel) { console.log(`服务器「${guild.name}」无有效频道创建邀请,请检查机器人权限`) return } // 生成邀请,默认设置为永不过期、仅可使用1次,避免链接泄露 const invite = await validChannel.createInvite({ maxAge: 0, maxUses: 1, unique: true }) console.log(`服务器「${guild.name}」邀请链接:${invite.url}`) } catch (err) { console.log(`生成服务器「${guild.name}」邀请失败,错误信息:`, err) } }) }) client.on('message', message => { // 原有消息指令代码可保留,无需改动 }) client.login(token);
使用注意事项
- 运行代码前先确认机器人在目标服务器的角色已勾选
创建即时邀请权限,否则会生成失败 - 如果你记得目标服务器的ID,建议解开代码里的ID判断注释,填入后只会输出目标服务器的邀请,避免多余信息干扰
- 启动机器人后直接查看终端控制台的输出,拿到链接点击即可加入服务器
- 成功进入服务器后,建议立刻删除这段自动生成邀请的代码,或者把邀请的
maxUses保持为1,用完链接自动失效,避免安全隐患
如果运行后提示无权限创建邀请,先确认机器人没有被移出服务器、角色权限没有被修改。
内容的提问来源于stack exchange,提问作者SnowyField
相关产品推荐
相关产品推荐

