// Copyright (c) 2013-23 Miranda NG team (https://miranda-ng.org) // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation version 2 // of the License. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see . // Instruction: // 1. Go to https://vk.com/editapp?id=3917910§ion=functions // 2. Create a stored procedure with the appropriate name // 3. Copy&Paste procedure code to code field. Save it. // 4. Create additional version(s) stored procedure (if required) // Stored procedure name: RetrieveUserInfo = Begin // Arguments: // Args.userid // Args.fields var res = API.users.get({ "user_ids": Args.userid, "fields": Args.fields, "name_case": "nom" }); return { "freeoffline": 0, "norepeat": 1, "usercount": res.length, "users": res }; // Stored procedure name: RetrieveUserInfo = End // Stored procedure name: RetrieveUsersInfo = Begin // Arguments: // Args.userids // Args.fields // Args.norepeat // Args.setonline // ver 1 if (Args.setonline == 1) API.account.setOnline(); var US = []; var res = API.users.get({ "user_ids": API.friends.getOnline(), "fields": Args.fields, "name_case": "nom" }); var t = 10; while (t > 0) { US = API.users.get({ "user_ids": Args.userids, "fields": Args.fields, "name_case": "nom" }); var index = US.length; while (index > 0) { index = index - 1; if (US[index].online != 0) { res.push(US[index]); }; }; t = t - 1; if (res.length > 0) t = 0; }; return { "freeoffline": 1, "norepeat": parseInt(Args.norepeat), "usercount": res.length, "users": res, "requests": API.friends.getRequests({ "extended": 0, "need_mutual": 0, "out": 0 }) }; // ver 2 if (Args.setonline == 1) API.account.setOnline(); var res = API.users.get({ "user_ids": Args.userids, "fields": Args.fields, "name_case": "nom" }); return { "freeoffline": 0, "norepeat": parseInt(Args.norepeat), "usercount": res.length, "users": res, "requests": API.friends.getRequests({ "extended": 0, "need_mutual": 0, "out": 0 }) }; // Stored procedure name: RetrieveUsersInfo = End // Stored procedure name: GetServerHistory = Begin // Arguments: // Args.userid // Args.offset // Args.reqcount // Args.time // Args.lastmid // Args.once var Hist = API.messages.getHistory({ "user_id": Args.userid, "count": Args.reqcount, "offset": Args.offset }); var ext = Hist.items.length; var index = 0; while (ext != 0) { if (Hist.items[index].date > Args.time) { if (Hist.items[index].id > Args.lastmid) { index = index + 1; ext = ext - 1; } else ext = 0; } else ext = 0; }; if (index > 0) { var ret = Hist.items.slice(0, index); var FMsgs = ret@.fwd_messages; var Idx = 0; var Uids = []; while (Idx < FMsgs.length) { var Jdx = 0; var CFMsgs = parseInt(FMsgs[Idx].length); while (Jdx < CFMsgs) { Uids.unshift(FMsgs[Idx][Jdx].user_id); Jdx = Jdx + 1; }; Idx = Idx + 1; }; var FUsers = API.users.get({ "user_ids": Uids, "name_case": "gen" }); return { "count": index, "datetime": parseInt(Args.time), "items": ret, "fwd_users": FUsers, "once": parseInt(Args.once), "rcount": parseInt(Args.reqcount) }; } else { return{"count":0,"datetime":parseInt(Args.time),"items":[],"fwd_users":[],"once":parseInt(Args.once),"rcount":parseInt(Args.reqcount)}; }; // Stored procedure name: GetServerHistory = End // Stored procedure name: GetServerConversationHistory = Begin // Arguments: // Args.userid // Args.offset // Args.reqcount // Args.time // Args.lastmid // Args.once var Hist = API.messages.getHistory({ "user_id": Args.userid, "count": Args.reqcount, "offset": Args.offset }); var ext = Hist.items.length; var index = 0; while (ext != 0) { if (Hist.items[index].date > Args.time) { if (Hist.items[index].id > Args.lastmid) { index = index + 1; ext = ext - 1; } else ext = 0; } else ext = 0; }; if (index > 0) { var ret = Hist.items.slice(0, index); var FMsgs = ret@.fwd_messages; var Idx = 0; var Uids = []; while (Idx < FMsgs.length) { var Jdx = 0; var CFMsgs = parseInt(FMsgs[Idx].length); while (Jdx < CFMsgs) { Uids.unshift(FMsgs[Idx][Jdx].peer_id); Jdx = Jdx + 1; }; Idx = Idx + 1; }; var FUsers = API.users.get({ "user_ids": Uids, "name_case": "gen" }); return { "count": index, "datetime": parseInt(Args.time), "items": ret, "fwd_users": FUsers, "once": parseInt(Args.once), "rcount": parseInt(Args.reqcount) }; } else { return{"count":0,"datetime":parseInt(Args.time),"items":[],"fwd_users":[],"once":parseInt(Args.once),"rcount":parseInt(Args.reqcount)}; }; // Stored procedure name: GetServerConversationHistory = End // Stored procedure name: RetrieveMessagesByIds = Begin // Arguments: // Args.mids var Msgs = API.messages.getById({ "message_ids": Args.mids }); var FMsgs = Msgs.items@.fwd_messages; var Idx = 0; var Uids = []; while (Idx < FMsgs.length) { var Jdx = 0; var CFMsgs = parseInt(FMsgs[Idx].length); while (Jdx < CFMsgs) { Uids.unshift(FMsgs[Idx][Jdx].user_id); Jdx = Jdx + 1; }; Idx = Idx + 1; }; var FUsers = API.users.get({ "user_ids": Uids, "name_case": "gen" }); return { "Msgs": Msgs, "fwd_users": FUsers }; // Stored procedure name: RetrieveMessagesByIds = End // Stored procedure name: RetrieveMessagesConversationByIds = Begin // Arguments: // Args.mids var Msgs = API.messages.getById({ "message_ids": Args.mids }); var FMsgs = Msgs.items@.fwd_messages; var ConvIds = Msgs.items@.peer_id; var Idx = 0; var Uids = []; while (Idx < FMsgs.length) { var Jdx = 0; var CFMsgs = parseInt(FMsgs[Idx].length); while (Jdx < CFMsgs) { Uids.unshift(FMsgs[Idx][Jdx].from_id); Jdx = Jdx + 1; }; Idx = Idx + 1; }; var FUsers = API.users.get({ "user_ids": Uids, "name_case": "gen" }); var Conv = API.messages.getConversationsById({"peer_ids": ConvIds}); return { "Msgs": Msgs, "fwd_users": FUsers, "conv":Conv }; // Stored procedure name: RetrieveMessagesConversationByIds = End // Stored procedure name: RetrieveUnreadMessages = Begin // Arguments: no var dlg = API.messages.getDialogs({ "count": 200 }); var users = API.friends.areFriends({ "user_ids": dlg.items@.message @.user_id}); var groups = API.groups.get(); return { "dialogs": dlg, "users": users, "groups": groups.items }; // Stored procedure name: RetrieveUnreadMessages = End // Stored procedure name: RetrieveUnreadConversations = Begin // Arguments: no var dlg = API.messages.getConversations({ "count": 200 }); var users = API.friends.areFriends({ "user_ids": dlg.items@.conversation@.peer@.local_id}); var groups = API.groups.get(); return { "dialogs": dlg, "users": users, "groups": groups.items }; // Stored procedure name: RetrieveUnreadConversations = End // Stored procedure name: RetrieveStatusMusic = Begin // Arguments: // Args.statusmsg // ver 1 var OldMsg = API.status.get(); API.status.set({ "text": "♫ " + Args.statusmsg }); return OldMsg; // ver 2 var CntLmt = 100; var OldMsg = API.status.get(); var Tracks = API.audio.search({ "q": Args.statusmsg, "count": CntLmt, "search_own": 1 }); var Cnt = Tracks.count; if (Cnt > CntLmt) { Cnt = CntLmt; } if (Cnt == 0) { API.audio.setBroadcast(); } else { var i = 0; var j = 0; var Track = " "; while (i < Cnt) { Track = Tracks.items[i].artist + " - " + Tracks.items[i].title; if (Track == Args.statusmsg) { j = i; } i = i + 1; } Track = Tracks.items[j].owner_id + "_" + Tracks.items[j].id; API.audio.setBroadcast({ "audio": Track }); }; return OldMsg; // ver 3 var CntLmt = 100; var Track = " "; var OldMsg = API.status.get(); var Tracks = API.audio.search({ "q": Args.statusmsg, "count": CntLmt, "search_own": 1 }); var Cnt = Tracks.count; if (Cnt > CntLmt) { Cnt = CntLmt; } if (Cnt == 0) { Track = "♫ " + Args.statusmsg; API.status.set({ "text": Track }); } else { var i = 0; var j = -1; while (i < Cnt) { Track = Tracks.items[i].artist + " - " + Tracks.items[i].title; if (Track == Args.statusmsg) { j = i; } i = i + 1; } if (j == -1) { Track = "♫ " + Args.statusmsg; API.status.set({ "text": Track }); } else { Track = Tracks.items[j].owner_id + "_" + Tracks.items[j].id; }; API.audio.setBroadcast({ "audio": Track }); }; return OldMsg; // Stored procedure name: RetrieveStatusMusic = End // Stored procedure name: DestroyChat = Begin // Arguments: // Args.chatid // Args.userid API.messages.removeChatUser({ "chat_id": Args.chatid, "user_id": Args.userid }); var Hist = API.messages.getHistory({ "chat_id": Args.chatid, "count": 200 }); var countMsg = Hist.count; var itemsMsg = Hist.items@.id; while (countMsg > 0) { API.messages.delete({ "message_ids": itemsMsg }); Hist = API.messages.getHistory({ "chat_id": Args.chatid, "count": 200 }); countMsg = Hist.count; itemsMsg = Hist.items@.id; }; return 1; // Stored procedure name: DestroyChat = End // Stored procedure name: RetrieveChatInfo = Begin // Arguments: // Args.chatid // ver 1 var Info = API.messages.getChat({ "chat_id": Args.chatid }); var ChatUsers = API.messages.getChatUsers({ "chat_id": Args.chatid, "fields": "id,first_name,last_name" }); return { "info": Info, "users": ChatUsers;}; // ver 2 var Info = API.messages.getChat({ "chat_id": Args.chatid }); var ChatUsers = API.messages.getChatUsers({ "chat_id": Args.chatid, "fields": "id,first_name,last_name" }); var ChatMsg = API.messages.getHistory({ "chat_id": Args.chatid, "count": 20, "rev": 0 }); var UR = parseInt(ChatMsg.unread); if (UR > 20) { if (UR > 200) UR = 200; ChatMsg = API.messages.getHistory({ "chat_id": Args.chatid, "count": UR, "rev": 0 }); }; var FMsgs = ChatMsg.items@.fwd_messages; var Idx = 0; var Uids = []; while (Idx < FMsgs.length) { var Jdx = 0; var CFMsgs = parseInt(FMsgs[Idx].length); while (Jdx < CFMsgs) { Uids.unshift(FMsgs[Idx][Jdx].user_id); Jdx = Jdx + 1; }; Idx = Idx + 1; }; var FUsers = API.users.get({ "user_ids": Uids, "name_case": "gen" }); var MsgUsers = API.users.get({ "user_ids": ChatMsg.items@.user_id, "fields":"id,first_name,last_name"}); return { "info": Info, "users": ChatUsers, "msgs": ChatMsg, "fwd_users": FUsers, "msgs_users": MsgUsers }; // ver 3 var Info = API.messages.getChat({ "chat_id": Args.chatid }); var PeerId = 2000000000 + parseInt(Args.chatid); var ChatUsers = API.messages.getConversationMembers({ "peer_id": PeerId, "fields": "id,first_name,last_name" }); var ChatMsg = API.messages.getHistory({ "peer_id": PeerId, "count": 20, "rev": 0 }); var UR = parseInt(ChatMsg.unread); if (UR > 20) { if (UR > 200) UR = 200; ChatMsg = API.messages.getHistory({ "peer_id": PeerId, "count": UR, "rev": 0 }); }; var FMsgs = ChatMsg.items@.fwd_messages; var Idx = 0; var Uids = []; var GUids =[]; while (Idx < FMsgs.length) { var Jdx = 0; var CFMsgs = parseInt(FMsgs[Idx].length); while (Jdx < CFMsgs) { if (FMsgs[Idx][Jdx].from_id>0) { Uids.unshift(FMsgs[Idx][Jdx].from_id); } else { GUids.unshift(-1*FMsgs[Idx][Jdx].from_id); }; Jdx = Jdx + 1; }; Idx = Idx + 1; }; var FUsers = API.users.get({ "user_ids": Uids, "name_case": "gen" }); var GUsers = []; if(GUids.length>0){ GUsers = API.groups.getById({ "group_ids": GUids }); }; var MsgUsers = API.users.get({ "user_ids": ChatMsg.items@.from_id, "fields":"id,first_name,last_name"}); return { "info": Info, "users": ChatUsers, "msgs": ChatMsg, "fwd_users": FUsers + GUsers, "msgs_users": MsgUsers}; var Info=API.messages.getChat({"chat_id": Args.chatid}); var ChatUsers=API.messages.getChatUsers({"chat_id":Args.chatid,"fields":"id,first_name,last_name"}); return {"info":Info,"users":ChatUsers}; // Stored procedure name: RetrieveChatInfo = End // Stored procedure name: DestroyKickChat = Begin // Arguments: // Args.chatid var Hist = API.messages.getHistory({ "chat_id": Args.chatid, "count": 200 }); var countMsg = Hist.count; var itemsMsg = Hist.items@.id; while (countMsg > 0) { API.messages.delete({ "message_ids": itemsMsg }); Hist = API.messages.getHistory({ "chat_id": Args.chatid, "count": 200 }); countMsg = Hist.count; itemsMsg = Hist.items@.id; }; return 1; // Stored procedure name: DestroyKickChat = End