Alexandre888
@Alexandre888
Javascript-разработчик

Как реализовать работу команды только после сообщения бота?

Требуется, чтобы бот писал к примеру «Напишите !next чтобы продолжить», и команда работала только после этого сообщения (без него она работать не должна).
Слабо понимаю принцип работы, подтолкните на верный путь, пожалуйста.
Заранее спасибо всем за ответы.
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
DeitySenpai
@DeitySenpai
dev, js, react.js, discord bots. yeah, js.
Для начала нужно определиться, нужно ли тебе знать то что человек написал next, в долгосрочной перспективе. Если это не так важно, и скорее всего допустим завтра он уже и не вспомнит о том что писал эту команду, то достаточно будет записать эту информацию в какой нибудь кэш. Если нет. То ты пишешь её в базу данных.

Давай рассмотрим вариант с кэшем. По аналогии ты сможешь связать это со своей базой данных если это будет нужно.
Я предполагаю ты используешь модуль discord.js И объяснения я буду писать для него.
Для удобства, мы можем записывать эти данные прямо в экземпляр класса GuildMember что бы это работало на каждом сервере дискорда.

для кэша мы можем создать объект cache прямо в экземпляре класса, и в свойства этого объекта мы будем записывать данные которые будет храниться в краткосрочной перспективе. Есть 2 варианта.
1 - Проверять есть ли у экземпляра класса такое свойство в контексте, если нет. То создавать его. А после этого писать в него нужные данные.
2 - На уровне прототипов при добавлении самой библиотекой экземпляра класса в кэш, создавать объект.

//1
if(!(member.cache && member.cache.nexted !== undefined)) member.cache = {
    nexted: false // по дефолту false
}
//В таком случае каждый раз когда ты будешь использовать кэш, нужно будет делать проверку 

//2
const { GuildMember } = require('discord.js')
Object.defineProperty(GuildMember.prototype, {
    configurable: true,
    value: {
        nexted: false
    }
})
//В таком случае по дефолту каждый экземпляр класса GuildMember будет содержат в себе такой объект


и после команды !next мы просто изменяем значение nexted на true.
А в самой команде если у нас значение nexted - false, то мы просто допустим выбрасываем сообщение в чат, ну или не делаем ничего.
а в обратном же случае если nexted - true, то мы продолжаем выполнять команду
и после её выполнения устанавливаем значение nexted обратно на false.

ну и всё.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы