forked from LyoSU/quote-bot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
random.js
32 lines (30 loc) · 881 Bytes
/
random.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
const Markup = require('telegraf/markup')
module.exports = async (ctx) => {
const randomQuote = await ctx.db.Quote.aggregate(
[
{
$match: {
$and: [
{ group: ctx.group.info._id },
{ 'rate.score': { $gt: 0 } }
]
}
},
{ $sample: { size: 15 } }
]
)
const quote = randomQuote[Math.floor(Math.random() * randomQuote.length)]
if (quote) {
ctx.replyWithDocument(quote.file_id, {
reply_markup: Markup.inlineKeyboard([
Markup.callbackButton(`👍 ${quote.rate.votes[0].vote.length}`, 'rate:👍'),
Markup.callbackButton(`👎 ${quote.rate.votes[1].vote.length}`, 'rate:👎')
]),
reply_to_message_id: ctx.message.message_id
})
} else {
ctx.replyWithHTML(ctx.i18n.t('random.empty'), {
reply_to_message_id: ctx.message.message_id
})
}
}