messageCreate
. Для тикета нужен интент GuildMessages
, а для лс нужен DirectMessages
и партиал Channel
. При первой отправке сообщения боту (создание тикета) бот создает канал и записывает, например, в бд id пользователя и канала тикета, чтобы связать их и использовать в дальнейшем. При получении сообщения из лс бот должен получить id тикета по id пользователя и перенаправить сообщение в тикет, ну и наоборот. interaction.member
. Для проверки роли можно использовать member.roles.cache.has('id')
if (interaction.member.roles.cache.has('1136984503886303253')) {}
interactionCreate
, который вы используете для обработки команд. Обрабатывайте там или создавайте коллекторы.if (!interaction.isModalSubmit()) return;
if (!interaction.isButton()) return;
// тоже самое что и
if (!interaction.isModalSubmit() || !interaction.isButton()) return;
// или
if (!(interaction.isModalSubmit() && interaction.isButton())) return;
interaction.guild
или message.guild
.const selectedUser = interaction.options.getUser('user', true);
const filter = async (i) => {
const result = [interaction.user.id, selectedUser.id].includes(i.user.id);
if (result) return true;
await i.reply({ content: 'You cannot use this button!', ephemeral: true });
return false;
}
const collector = response.createMessageComponentCollector({ componentType: 'BUTTON', filter, time: 60000 });
collect
collector.on('collect', async (i) => {
if (![interaction.user.id, selectedUser.id].includes(i.user.id)) {
await interaction.reply({ content: 'You cannot use this button!', ephemeral: true });
return;
}
});