Создайте приглашение с сервера 1 и отправьте его DMS пользователя на сервере 2

#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:

Для достижения вашей цели мы делаем это:

  1. Получите упомянутого пользователя из сообщения.
  2. Найдите другую гильдию, в которую мы хотим пригласить пользователя.
  3. Создайте приглашение на системный канал другой гильдии (это не обязательно должно быть systemChannel ).
  4. Отправьте приглашение на 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 .