Без полного кода довольно сложно указать, какие строки кода следует изменить.Тем не менее, общая идея состоит в том, чтобы сравнивать идентификатор гильдии каждый раз, когда вы запускаете команду.В объекте Message
вы можете найти идентификатор гильдии, например:
msg.guild.id
Когда пользователь запрашивает загадку, вы должны сохранить идентификатор гильдии, а затем сравнить его с идентификатором из команды ответа.
Однако есть еще одно решение, которое может лучше соответствовать вашим потребностям: awaitMessages
метод из TextChannel класс.
Наиболее важным преимуществом является то, что он используется вканал , поэтому вам не нужно добавлять какую-либо логику, подобную той, что я описал выше.
Пример из документации должен помочь вам правильно включить его в ваш сценарий (мои комментарии и небольшие изменения):
// Here you need to create a filter to 'catch' only desired messages
// E.g. filter I use to check if my bot was pinged is as below
// message.mentions.users.some(mention => mention.id === client.user.id)
const filter = m => m.content.includes('answer');
// Here you specify max: 1 as you want to catch and respond to each message
channel.awaitMessages(filter, { max: 1, time: 60000, errors: ['time'] })
.then(collected => console.log('If correct command was sent, program enters here'))
.catch(collected => console.log('In case errors or timeout, put commands here'));
Единственное, чего не хватает, это зациклить awaitMessages
(чтобы оно не заканчивалось после того, как найдено одно сообщение) и установить отдельный таймер, чтобы вы знали, когда заканчивается время ответа.