interaction.guild.channels.create(...).then(channel => channel.send("сообщение"))
let text = await interaction.guild.channels.create(...);
await text.send("сообщение")
`classic ${interaction.username}`
interaction.member.user.username
interaction.member.nickname
member.bannable // false в случае, если бот не может забанить юзера; true в случае, если бот может забанить юзера (зависит от позиции самой высокой роли у бота и у юзера)
guild.roles.comparePositions(member.roles.highest, guild.me.roles.highest)
* метод вернёт отрицательное число, если позиция первой роли < позиции второй роли;function is_url(str) {
let regexp = /^(?:(?:https?|ftp):\/\/)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/\S*)?$/;
if(regexp.test(str)) {
return true;
} else {
return false;
}
}
let warns = new Map();
client.on('messageCreate', async message => {
if (is_url(message.content) === true) {
const embed = new MessageEmbed()
.setTitle('Обнаружена ссылка!')
.setDescription(`Ссылки на нашем сервере запрещены\nНе присылай их больше пожалуйста, это наказуемо.`)
.setThumbnail(message.author.avatarURL())
.setTimestamp()
.setColor('RED')
.setFooter('Ознакомьтесь с правилами')
if (!warns.has(message.author.id)) {
warns.set(message.author.id, 1);
message.channel.send({ content: `<@${message.author.id}>`, embeds: [embed] })
} else {
warns.set(message.author.id, warns.get(message.author.id) + 1);
if (warns.get(message.author.id) === 2) {
return функция_мута();
} else if (warns.get(message.author.id) >= 3) {
warns.delete(message.author.id);
return функция_бана();
}
}
}
});
- const { Client, Intents } = require('discord.js');
+ const { Client, Intents, MessageEmbed } = require('discord.js');
// ... //
- const embed = new Discord.MessageEmbed()
- .setAuthor("Айпи наших серверов")
- .setColor('#228B22')
- .setDescription("Servername #1 - 37.230.210.97:27015 [Online " + play + "/128]")
- .setFooter("© SKRP. Все права защищены.")
- .setTimestamp()
+ const embed = new MessageEmbed();
+ .setAuthor({ name: "Айпи наших серверов" })
+ .setColor('#228B22')
+ .setDescription("Servername #1 - 37.230.210.97:27015 [Online " + play + "/128]")
+ .setFooter({ text: "© SKRP. Все права защищены." })
+ .setTimestamp()
(node:7672) DeprecationWarning: The message event is deprecated. Use messageCreate instead
- client.on('message', async message => { /* ... */ })
+ client.on('messageCreate', async message => { /* ... */ })
client.on('messageCreate', async message => {
try {
if (message.type === "REPLY") {
let messageReference = await message.fetchReference();
console.log(messageReference.author.id) // ID пользователя, на сообщение которого ответили.
}
} catch (err) {
if (err.name === "Error [MESSAGE_REFERENCE_MISSING]") {
console.log("это обычное сообщение.")
}
}
});
Server Members Intent
:GUILD_MEMBERS
непосредственно в коде:const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_MEMBERS] });
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', () => {
// здесь пишите код для действий, которые будут происходить после остановки сбора нажатий на кнопки
});