const { MessageActionRow, MessageButton } = require('discord.js');
// ^^ необходимо обязательно указывать MessageActionRow и MessageButton
const row = new MessageActionRow() // пример "набора" компонентов (компоненты в вашем случае - кнопки)
.addComponents(
new MessageButton()
.setCustomId('здесь указывается ID кнопки, придуманное вами, в целях последующей идентификации кнопки')
.setEmoji('здесь указывается эмодзи, который будет на кнопке (обязательно в формате эмодзи, не в :таком:)')
.setStyle('здесь указывается стиль кнопки - есть пять стилей, про которые написано в статьях, приведённых выше'),
);
await interaction.reply({ /* для того, чтобы отправить сообщение с кнопками */
content: 'контент_сообщения',
embeds: [embed], // embed'ы (если нужно прикрепить)
components: [row] // "наборы" компонентов
});
const message = await interaction.fetchReply(); // ждём, пока бот "получит" ответ на слэш-команду
const collector = message.createMessageComponentCollector({ // "сбор" нажатий на кнопки
componentType: "BUTTON",
time: 60000 // время сбора, указывается в миллисекундах
});
collector.on('collect', i => {
// здесь пишите код для действий, которые будут происходить после нажатия на кнопки
// i.user.id - ID пользователя, который нажал на любую из кнопок | сравнивайте с interaction.user.id, если хотите удостовериться, что на кнопку нажимает именно тот, кто отправил слэш-команду
// i.customId - ID кнопки (customId, который указывался ранее, в MessageActionRow), на которую нажали.
});
collector.on('end', () => {
// здесь пишите код для действий, которые будут происходить после остановки сбора нажатий на кнопки
});
client.on("messageCreate", async (message) => {
await message.react("1️⃣"); // >
await message.react("2️⃣"); // > ваши эмодзи
await message.react("3️⃣"); // >
});
чтобы бот реагировал на обычные сообщения, не забудьте добавить интент "GUILD_MESSAGES"const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });
const client = new Client(
{
intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_MESSAGE_REACTIONS],
partials: ['MESSAGE', 'CHANNEL', 'REACTION'],
}
);
// . . . //
client.on("messageReactionAdd", async (reaction, user) => {
if (reaction.partial) {
try {
let fullReactionMessage = await reaction.fetch();
// далее работайте только с fullReactionMessage
} catch (error) {
console.error('Получить сообщение не удалось:', error);
return;
}
} else {
// ... //
}
})
.createMessageComponentCollector()
был добавлен в 13.0.0 версии, поэтому для использования нужно обновиться.npm uninstall discord.js
npm install discord.js
node -v
в терминал. await message.channel.send(embed, { component: row });
- message.channel.send(embed, { component: row });
+ message.channel.send({ embeds: [embed], components: [row] });
if (interaction.commandName === 'ping') {
await interaction.reply('Pong!');
}
client.on("messageCreate", message => {
if (message.content === "ping") return message.reply("Pong!")
})
- const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
+ const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });
if (message.author.bot) return;
let id1 = "ID_первого_канала", id2 = "ID_второго_канала";
if (message.channel.id === id1) {
return message.guild.channels.cache.get(id2).send(message.content)
} else if (message.channel.id === id2) {
return message.guild.channels.cache.get(id1).send(message.content)
}
- const robot = new Discord.Client();
+ const robot = new Client({ intents: [Intents.FLAGS.GUILDS] });
const { MessageEmbed, WebhookClient } = require('discord.js');
const url = "url_вебхука";
const webhookClient = new WebhookClient({ id: url.split("/")[5], token: url.split("/")[6]});
webhookClient.send({
content: 'контент',
username: 'имя_пользователя',
avatarURL: 'url_аватара',
});
// robot.channels.cache.get(userData[0].channel).send(`<@${userData[0].user}> вы размучены`)
/* для добавления роли */
robot.guilds.cache.get(robot.channels.cache.get(userData[0].channel).guild.id).members.cache.get("id_пользователя").roles.add("id_роли")
/* для удаления роли*/
robot.guilds.cache.get(robot.channels.cache.get(userData[0].channel).guild.id).members.cache.get("id_пользователя").roles.remove("id_роли")
const guild = client.guilds.cache.get("id_сервера");
setInterval(function () {
let memberCount = guild.members.cache.filter(member => !member.user.bot).size;
/* количество участников на сервере, которые не являются ботами. */
let memberCountChannel = guild.channels.cache.get("id_голосового_канала");
memberCountChannel.setName(`Участников: ${memberCount}`);
/* устанавливаем голосовому каналу название */
}, 1000);
let onlineMemberCount = guild.members.cache.filter(member => !member.user.bot && member.presence.status === "online").size;