Как сделать мэдлиб с помощью Discord-бота? (Discord JS v12)
Я пытаюсь создать madlib с помощью бота Discord, и каким-то образом мне нужно назначить переменную для каждой строки сообщения пользователя...
вот мой код:
client.on('message', message=>{//madlib
var lib1 = [
' ',//<--(X)
'VERB',
'ADJECTIVE',
'NOUN (PLURAL)',
'ADJECTIVE',
'VERB ENDING IN "ING"',
'VERB',
'NUMBER',
'ADJECTIVE',
'NOUN (PLURAL)',
'NOUN (PLURAL)',
'NOUN (PLURAL)',
'RELATIVE (PLURAL)',
'ADJECTIVE',
'ADJECTIVE',
'NOUN (PLURAL)',
]
if (message.content == '!madlib'){
var rand = Math.floor(Math.random() * 2) + 1;
if (rand == '1'){
message.reply(lib1);
}
if (rand == '2'){
//im gonna put another madlib right here as another option and more random options.
}
}
})
не уверен, как пользователь вставит переменные... кто-нибудь знает, как это сделать?
2 ответа
Вам нужно выяснить, как сделать своего бота интерактивным. Он может отправить сообщение типа "Дай мне ГЛАГОЛ", а затем получить ответ от команды в чате. Я не знаю, как это сделать специально для Discord, поэтому вам нужно будет провести дополнительное исследование о том, как получить ответ от пользователя.
Вы можете просто использовать message.channel.awaitMessages()
ждать ответа от пользователя.
Вот пример:
message.reply("Send a message!! (expires in 10s)")
const filter = m => m.autor.id === message.author.id;
message.channel.awaitMessages(filter, {
max: 1,
time: 10_000,//(10 seconds)
errors: ['time']
})
.then(async(msgs) => {
//msgs is a collection. You need to do msgs.first() to get the first message
const msg = msgs.first();
//now just use "msg" as your normal message variable, like so
message.reply("I have received your message: " + msg.content)
})
.catch(() => message.reply("You took too long"))
См. Также https://discordjs.guide/popular-topics/collectors.html.