#javascript #discord #discord.js
Вопрос:
Поэтому я пытаюсь создать тип команды, которая будет генерировать 1 разовое использование на сервере 1. Теперь, если бы я ввел эту команду в общий текст на сервере 2 !dminvite @user
, она отправила бы упомянутому пользователю одно созданное приглашение с сервера 1 и отправила его упомянутому пользователю на сервере 2 через DMs.
Несколько Заметок:
1. У меня в файле сохранены 2 идентификатора сервера config.json
, и для этой команды приглашения требуется файл config.json. В этой базе командных файлов
2. Эта команда выполняется по discord.js v12, но если кто-нибудь захочет помочь в discord.js v13, это тоже было бы потрясающе.
3. Я никоим образом не пытаюсь что-либо рекламировать, я владею обоими серверами
У меня есть записанный код, но он не работает, просто точка зрения:
message.delete();
message.mentions.members.first() ||
message.guild.members.cache.get(args[0]);
const Options = {
temporary: false,
maxAge: 0,
maxUses: 1,
unique: true
};
const channel = message.guild.channels.cache.get('(Channel ID)');
let invite = message.channels.createInvite(Options).then(function(Invite) {
message.mentions.members.first().send({embed: {
title: `**INVITE**`,
description: `Invite:nhttps://discord.gg/` Invite.code
}});
message.channel.send(new Discord.MessageEmbed()
.setAuthor(message.author.tag, message.author.displayAvatarURL({ dynamic: true }))
.setDescription(`${message.author.tag}, invite was sent to DMs`)
.setColor('BLUE')
);
});
Комментарии:
1. Что вы подразумеваете под «это не работает»? Что он делает? Это выдает ошибку или что-то в этом роде?
2. он не может найти канал по идентификатору. Я просто пытаюсь придумать, как включить гильдию, я думаю, что в этом может быть проблема. Но каждый раз, когда я пытаюсь включить гильдию, появляется сообщение об ошибке
Ответ №1:
Для достижения вашей цели мы делаем это:
- Получите упомянутого пользователя из сообщения.
- Найдите другую гильдию, в которую мы хотим пригласить пользователя.
- Создайте приглашение на системный канал другой гильдии (это не обязательно должно быть
systemChannel
). - Отправьте приглашение на DMS указанного пользователя.
// Id of the other guild
const otherGuildId = "guild id";
client.on("message", async (message) => {
// Don't reply to itself
if (message.author.id == client.user.id) return;
// Check if the message starts with our command
if (message.content.startsWith("!dminvite")) {
// Get the mentioned user from the message
const user = message.mentions.users.first();
if (!user) {
message.channel.send("You need to mention the user to send the invitation to.");
return;
}
// Fetch the other guild we want to invite the user to
const otherGuild = await client.guilds.fetch(otherGuildId);
// Create invite to the other guild's system channel
const invite = await otherGuild.systemChannel.createInvite({
maxAge: 0,
maxUses: 1,
unique: true
});
// Send the invite to the mentioned user's DMs
user.send({
embed: {
title: "**INVITE**",
description: `${invite}`
}
});
}
});
Обратите внимание , что если вы не хотите использовать systemChannel
, вы можете просто получить любой канал, который вы хотите otherGuild
, например, по его идентификатору.
// Resolve channel id into a Channel object
const channel = otherGuild.channels.resolve("channel id");
Использование discord.js ^12.5.3
.