RefferalLib
Use this Lib for referral tracking.
Last updated
// Command /start
// this function will be executed if user poress own ref link
function onTouchOwnLink(){
Bot.sendMessage("It is your ref link!")
}
// user can restart bot by ref link again
function onAlreadyAttracted(){
Bot.sendMessage("You already joined")
}
// it is new user. He start bot via ref link
function onAttracted(byUser){
Bot.sendMessage("Thank you for joining!" +
"Your friend TG id is: " + byUser.telegramid)
// you can add bonus here...
}
RefLib.track({
onTouchOwnLink: onTouchOwnLink,
onAlreadyAttracted: onAlreadyAttracted,
onAttracted: onAttracted,
// you can use "", "r" and etc for prefix
// if you change it - you need to pass same linkPrefix for
// RefLib.getLink() also!
// Prefix "user" is used by default
// linkPrefix: "user",
// you can pass debug for external debug info
//debug: true,
// we can use List or TopBoardLib for Top List
// by default TopBoardLib is used
// useList: false
// if useList - false (TopBoardLib is used)
// you can pass max board count
// it is 10 by default
// topBoardMaxCount: 15
});let refList = RefLib.getRefList();
if (!refList.exist) {
Bot.sendMessage("No any affiliated users")
return
}
let users_rows = ""
// only 100 first users here
// for other users you need use pagination:
// https://help.bots.business/bjs/lists#paginating
let users = refList.getUsers();
for (var ind in users) {
users_rows = users_rows + "\n👤 " + CommonLib.getLinkFor( users[ind] )
}
let msg =
"*Total users:* " +
RefLib.getRefCount() +
"\n _the first user was tracked:_ \n" +
" _" +
refList.created_at +
"_" +
"\n----" +
users_rows
Bot.sendMessage(msg);// It is just List
// you can order, paginate it!
// https://help.bots.business/bjs/lists#getting-data
let list = RefLib.getTopList();
// It is only for List
// by default TopBoardLib is used
// see useList param in track
// list.order_by = "integer_value";
// olso it is possible get newest members:
// list.order_ascending = false;
var items = list.get();
//Bot.inspect(items);
var msg = 'Top list: ';
var prop;
for(var ind in items){
prop = items[ind]
msg = msg + "\n" +
String( parseInt(ind) + 1 ) + ". " +
CommonLib.getLinkFor(prop.user) + ": 👨" +
String(prop.value)
}
Bot.sendMessage(msg);function onAttracted(refUser){
// access to Bonus Res of refUser
let refUserBonus = ResLib.anotherUserRes("money", refUser.telegramid);
refUserBonus.add(100); // add 100 bonus for friend
}
RefLib.track({
onAttracted: onAttracted
});let res = ResLib.userRes("money");
let referrer = RefLib.getAttractedBy();
// if current user was attracted by referrer
if(referrer){
let referrerRes = ResLib.anotherUserRes(
"money", referrer.telegramid);
let amount = res.value * 0.05; // it is 5%
referrerRes.takeFromAnother(res, amount);
}