New emojis, getting stats for any user
This commit is contained in:
parent
88d3a7d06f
commit
d25a6e2099
|
@ -102,3 +102,4 @@ dist
|
||||||
|
|
||||||
# TernJS port file
|
# TernJS port file
|
||||||
.tern-port
|
.tern-port
|
||||||
|
.vscode/launch.json
|
||||||
|
|
114
index.js
114
index.js
|
@ -79,10 +79,11 @@ bot.onText(/^\/help/, async msg => {
|
||||||
Между изменениями кармы от одного человека должно пройти не менее ${chat.options.karmaCooldown} секунд\\.
|
Между изменениями кармы от одного человека должно пройти не менее ${chat.options.karmaCooldown} секунд\\.
|
||||||
Если у вас отрицательная карма \\- менять другим её нельзя\\!
|
Если у вас отрицательная карма \\- менять другим её нельзя\\!
|
||||||
|
|
||||||
/my\\_stats \\- покажет вашу статистику кармы и сообщений для данного чата\\. Карма общая на все чаты\\.
|
/stats \\- покажет вашу статистику кармы и сообщений для данного чата\\. Карма общая на все чаты\\.
|
||||||
/top \\- покажет ТОП\\-10 пользователей данного чата по числу кармы\\.
|
/top \\- покажет ТОП\\-10 мест по карме\\.
|
||||||
|
/top\\_n \\- покажет отрицательный ТОП\\-10\\.
|
||||||
/me \\- я напишу твоё сообщение как действие\\. Например это:
|
/me \\- я напишу твоё сообщение как действие\\. Например это:
|
||||||
/me написал очень полезного бота
|
\`/me написал очень полезного бота\`
|
||||||
превратится в это:
|
превратится в это:
|
||||||
_*Vlad* написал очень полезного бота_
|
_*Vlad* написал очень полезного бота_
|
||||||
|
|
||||||
|
@ -126,7 +127,7 @@ bot.onText(/^\/set ([a-zA-Z]+) (\d+)/, async(msg, match) => {
|
||||||
if (chat.options[option] && value) {
|
if (chat.options[option] && value) {
|
||||||
let field = 'options.'+option
|
let field = 'options.'+option
|
||||||
let obj = {}
|
let obj = {}
|
||||||
obj[field] = Math.min(Math.max(60, value), 600)
|
obj[field] = Math.min(Math.max(10, value), 600)
|
||||||
Chat.updateOne({uid: msg.chat.id}, {$set: obj}).exec()
|
Chat.updateOne({uid: msg.chat.id}, {$set: obj}).exec()
|
||||||
bot.deleteMessage(msg.chat.id, msg.message_id)
|
bot.deleteMessage(msg.chat.id, msg.message_id)
|
||||||
bot.sendMessage(msg.chat.id, `Значение ${option} установлено на ${obj[field]}`)
|
bot.sendMessage(msg.chat.id, `Значение ${option} установлено на ${obj[field]}`)
|
||||||
|
@ -190,31 +191,7 @@ bot.onText(/док(ументац[а-я]+|[а-я])? ((п)?о )?(?<topic>@?[\w\d]
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
bot.onText(/^\/top/, async msg => {
|
||||||
|
|
||||||
bot.onText(/^\/top\+$/, async msg => {
|
|
||||||
return
|
|
||||||
const chat = await Chat.findOne({uid: msg.chat.id})
|
|
||||||
const users = await User.find({uid: chat.users}).limit(10).sort({karma: -1}).select({username: 1, karma: 1, uid: 1})
|
|
||||||
let message = "Вот наш ТОП\\-10 пользователей в данном чате:\n"
|
|
||||||
let i = 1
|
|
||||||
let lastKarma = users[0].karma
|
|
||||||
for(let user of users) {
|
|
||||||
let name = markdowned(user.username)
|
|
||||||
if(user.uid == msg.from.id){
|
|
||||||
name = "*" + name + "*"
|
|
||||||
}
|
|
||||||
if(user.karma < lastKarma)
|
|
||||||
{
|
|
||||||
i+=1
|
|
||||||
lastKarma = user.karma
|
|
||||||
}
|
|
||||||
message += `${i}\\. ${name} \\(${markdowned(user.karma)}\\)\n`
|
|
||||||
}
|
|
||||||
bot.sendMessage(msg.chat.id, message, {parse_mode: "MarkdownV2", reply_to_message_id: msg.message_id})
|
|
||||||
})
|
|
||||||
|
|
||||||
bot.onText(/^\/top$/, async msg => {
|
|
||||||
const chat = await Chat.findOne({uid: msg.chat.id})
|
const chat = await Chat.findOne({uid: msg.chat.id})
|
||||||
if (!chat) {
|
if (!chat) {
|
||||||
return
|
return
|
||||||
|
@ -253,7 +230,7 @@ bot.onText(/^\/top$/, async msg => {
|
||||||
bot.sendMessage(msg.chat.id, message, {parse_mode: "MarkdownV2", reply_to_message_id: msg.message_id})
|
bot.sendMessage(msg.chat.id, message, {parse_mode: "MarkdownV2", reply_to_message_id: msg.message_id})
|
||||||
})
|
})
|
||||||
|
|
||||||
bot.onText(/^\/top\-$/, async msg => {
|
bot.onText(/^\/top_n/, async msg => {
|
||||||
const chat = await Chat.findOne({uid: msg.chat.id})
|
const chat = await Chat.findOne({uid: msg.chat.id})
|
||||||
if (!chat) {
|
if (!chat) {
|
||||||
return
|
return
|
||||||
|
@ -293,23 +270,47 @@ bot.onText(/^\/top\-$/, async msg => {
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bot.onText(/^\/my_stats/, async msg => {
|
bot.onText(/^\/my_stats/, async msg => {
|
||||||
|
bot.sendMessage(msg.chat.id, `Теперь команда для показа статистики - /stats`)
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
bot.onText(/^\/stats/, async msg => {
|
||||||
const chat = await Chat.findOne({uid: msg.chat.id})
|
const chat = await Chat.findOne({uid: msg.chat.id})
|
||||||
if (!chat) {
|
if (!chat) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const me = await getUser(msg.from)
|
let user
|
||||||
const lessKarma = await User.countDocuments({karma: {$gt: me.karma}})
|
if(msg.reply_to_message) {
|
||||||
const sameKarma = await User.find({karma: me.karma})
|
user = await getUser(msg.reply_to_message.from) // Get user from reply
|
||||||
console.log(sameKarma)
|
} else if (msg.entities.length > 1) {
|
||||||
|
for(entity of msg.entities) {
|
||||||
|
if (entity.type == "mention") {
|
||||||
|
const username = msg.text.slice(entity.offset+1, entity.offset+entity.length) // Get user from @Mention
|
||||||
|
user = await User.findOne({username: username})
|
||||||
|
break
|
||||||
|
} else if (entity.type == "text_mention") {
|
||||||
|
user = await getUser(entity.user) // Get user from @Mention without username.
|
||||||
|
break // Strange that this is easier than regular mentions.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
user = await getUser(msg.from) // Just get user that sent this message
|
||||||
|
}
|
||||||
|
console.log(user)
|
||||||
|
if(!user) {
|
||||||
|
bot.sendMessage(msg.chat.id, 'Извините, не нашла ничего на данного пользвателя')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const lessKarma = await User.countDocuments({karma: {$gt: user.karma}})
|
||||||
|
const sameKarma = await User.find({karma: user.karma})
|
||||||
let sameMessage = ""
|
let sameMessage = ""
|
||||||
if(sameKarma.length > 1) {
|
if(sameKarma.length > 1) {
|
||||||
sameMessage = "\nТы делишь его с:\n"
|
sameMessage = "\nТы делишь его с:\n"
|
||||||
let i = 0;
|
let i = 0;
|
||||||
for(let same of sameKarma) {
|
for(let same of sameKarma) {
|
||||||
if (i < 6) {
|
if (i < 6) {
|
||||||
if(same.uid != me.uid) {
|
if(same.uid != user.uid) {
|
||||||
sameMessage += ` \\- *${markdowned(same.username)}*\n`
|
sameMessage += ` \\- *${markdowned(same.username)}*\n`
|
||||||
i += 1
|
i += 1
|
||||||
}
|
}
|
||||||
|
@ -320,13 +321,13 @@ bot.onText(/^\/my_stats/, async msg => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let message = `
|
let message = `
|
||||||
Вот твоя статистика, ${markdowned(me.username)}:
|
Вот информация о тебе, *${markdowned(user.username)}*:
|
||||||
|
|
||||||
Карма: *${markdowned(me.karma)}*
|
Карма: *${markdowned(user.karma)}*
|
||||||
Место среди пользователей: *${lessKarma+1}* ${sameMessage}
|
Место среди пользователей: *${lessKarma+1}* ${sameMessage}
|
||||||
Количество сообщений: *${me.messagesCount}*
|
Количество сообщений: *${user.messagesCount}*
|
||||||
Сколько раз менял карму: *${me.karmaChanged}*
|
Сколько раз менял карму: *${user.karmaChanged}*
|
||||||
Сколько раз получал карму: *${me.karmaGot}*
|
Сколько раз получал карму: *${user.karmaGot}*
|
||||||
`
|
`
|
||||||
bot.sendMessage(msg.chat.id, message, {parse_mode: "MarkdownV2", reply_to_message_id: msg.message_id})
|
bot.sendMessage(msg.chat.id, message, {parse_mode: "MarkdownV2", reply_to_message_id: msg.message_id})
|
||||||
})
|
})
|
||||||
|
@ -335,7 +336,7 @@ bot.onText(/^\/my_stats/, async msg => {
|
||||||
|
|
||||||
bot.on('message', async msg => {
|
bot.on('message', async msg => {
|
||||||
let chat = await getChat(msg.chat)
|
let chat = await getChat(msg.chat)
|
||||||
if (!chat) {
|
if (!chat || msg.chat.id > 0) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let user = await getUser(msg.from)
|
let user = await getUser(msg.from)
|
||||||
|
@ -353,6 +354,11 @@ bot.on('message', async msg => {
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
async function addPhrase(trigger, text) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async function getChat(c) {
|
async function getChat(c) {
|
||||||
let chat = await Chat.findOne({uid: c.id})
|
let chat = await Chat.findOne({uid: c.id})
|
||||||
|
@ -390,8 +396,10 @@ function getRandomInt(min, max) {
|
||||||
return Math.floor(Math.random() * (max - min)) + min; //Максимум не включается, минимум включается
|
return Math.floor(Math.random() * (max - min)) + min; //Максимум не включается, минимум включается
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async function processKarma(msg, match, settings={}) {
|
async function processKarma(msg, match, settings={}) {
|
||||||
|
if(process.env.DEBUG) {
|
||||||
|
return
|
||||||
|
}
|
||||||
if(msg.reply_to_message) {
|
if(msg.reply_to_message) {
|
||||||
const chat = await getChat(msg.chat)
|
const chat = await getChat(msg.chat)
|
||||||
if (!chat) {
|
if (!chat) {
|
||||||
|
@ -411,27 +419,13 @@ async function processKarma(msg, match, settings={}) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(msg.sticker) {
|
if(msg.sticker) {
|
||||||
switch(msg.sticker.emoji) {
|
if (["👍","👍🏻","👍🏼","👍🏽","👍🏾","👍🏿","➕"].includes(msg.sticker.emoji)) {
|
||||||
case "👍":
|
|
||||||
case "👍🏻":
|
|
||||||
case "👍🏼":
|
|
||||||
case "👍🏽":
|
|
||||||
case "👍🏾":
|
|
||||||
case "👍🏿":
|
|
||||||
changeMessage = `повысил`
|
changeMessage = `повысил`
|
||||||
updateValue = 1
|
updateValue = 1
|
||||||
break
|
}
|
||||||
case "👎":
|
else if (["👎","👎🏻","👎🏼","👎🏽","👎🏾","👎🏿","➖"].includes(msg.sticker.emoji)){
|
||||||
case "👎🏻":
|
|
||||||
case "👎🏼":
|
|
||||||
case "👎🏽":
|
|
||||||
case "👎🏾":
|
|
||||||
case "👎🏿":
|
|
||||||
changeMessage = `уменьшил`
|
changeMessage = `уменьшил`
|
||||||
updateValue = -1
|
updateValue = -1
|
||||||
break
|
|
||||||
default:
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(updateValue == 0) return
|
if(updateValue == 0) return
|
||||||
|
|
Loading…
Reference in New Issue