Bots Home
|
Create an App
Every Friday Raffle tannyakim
Author:
tannyakim
Description
Source Code
Launch Bot
Current Users
Created by:
Tannyakim
cb.settings_choices = [ {name: "raffleWord", type: 'str', defaultValue: "raffle", label: "raffle word in tipnote"}, {name: 'ticketPrice', type: 'int', defaultValue: 25, label: "Ticket Price"}, {name: 'deal1', type: 'str', defaultValue: "3-50", label: "Deal 1 : tickets-tkns", required: false}, {name: 'deal2', type: 'str', defaultValue: "6-69", label: "Deal 2 : tickets-tkns", required: false}, {name: 'deal3', type: 'str', label: "Deal 3 : tickets-tkns", required: false}, { name: "rafflePromo3", type: 'str', label: "raffle promo", defaultValue: "tanyakim raffle land is on!$$1st place:$$ALL CURRENT CONTENT(VIDS,PICS):P)$$10 min passwordshow,YOU CONTROL MY TOY$$snapchat for life$$PHONE NR!!$$Free PM in my room+THE PASSWORD FOR FREE ON 30TH CRAZYtICKET(ONLY ONE MONTH) !!$$$$2nd place:$$TWO VIDS $$2CUSTOM PICS$$Free snapchat for life!!$$Free PM in my room 1 month!!$$$$3rd place:$$1video$$Snapchat for lifes$$Free PM in my room for a week!$$" }, {name: 'history', type: 'str', required: false} ]; var _userToTickets = {}; var _raffleWord; var _ticketPrice; var _deals = []; _init(); cb.onTip(onTip); cb.onMessage(onMessage); cb.onEnter(onEnter); function _init() { var settings = cb.settings; if (!settings || !settings.raffleWord) return; _loadHistory(settings); _loadDeals(settings); _raffleWord = settings.raffleWord.toLowerCase(); _ticketPrice = settings.ticketPrice; } function _loadHistory(settings) { var history = settings.history; if (!history) return; history = JSON.parse(history); if (!history) return; _userToTickets = history; } function _loadDeals(settings) { var dealNum = 1; while (true) { var deal = settings['deal' + dealNum]; if (!deal) break; cb.log(deal); cb.log('-----'); cb.log(deal.substring(0, deal.indexOf('-'))); cb.log('-----'); cb.log(deal.substring(deal.indexOf('-') + 1, deal.length)); var tickets = parseInt(deal.substring(0, deal.indexOf('-'))); var tkns = parseInt(deal.substring(deal.indexOf('-') + 1, deal.length)); _deals[tkns] = tickets; dealNum++; } } function _printRaffleStatus(toUser) { notice("==================", toUser); notice("Raffle Status:", toUser); var users = []; for (var userName in _userToTickets) { users.push({name: userName, tickets: _userToTickets[userName]}); } users.sort(function (x, y) { return y.tickets - x.tickets; }); for (var i in users) { notice(users[i].name + " : " + users[i].tickets + " tickets", toUser); } notice("==================", toUser); } function _printPromo(toUser) { var msg = cb.settings.rafflePromo3.split('$$').join('\n'); msg += 'Ticket Price : ' + _ticketPrice + ' tkns\n'; for (var dealNum in _deals) { msg += _deals[dealNum] + " tickets in " + dealNum + " tkns\n"; } msg += 'Write "' + _raffleWord + '" in tipnote to buy tickets!'; notice(msg, toUser); } function _addTicketsToUser(user, tickets) { user = user.toLowerCase(); var userTickets = _userToTickets[user] || 0; userTickets += tickets; _userToTickets[user] = userTickets; } function _removeTicketsToUser(user, tickets) { user = user.toLowerCase(); var userTickets = _userToTickets[user] || 0; userTickets -= tickets; _userToTickets[user] = userTickets > 0 ? userTickets : 0; } function _draw(message, timeout, callback) { if (timeout) { notice(message + " IN " + timeout + " SECONDS!"); setTimeout(function () { _draw(message, timeout - 1, callback); }, timeout * 1000); return; } var allUsers = []; for (var user in _userToTickets) { for (var i = 0; i < _userToTickets[user]; i++) { allUsers.push(user); } } cb.log(allUsers); var winnerIdx = getRandom(0, allUsers.length - 1); cb.log(winnerIdx); var winner = allUsers[winnerIdx]; cb.log('winnder is is is ' + winner); _userToTickets[winner] = _userToTickets[winner] - 1; callback(winner); } function drawThirdPlace() { _draw("THIRD PLACE IN tannykim RAFFLE WILL DRAW", 3, function (winner) { cb.log("winnder is " + winner); notice("THE THIRD PLACE IN tannyakim RAFFLE IS....\n" + winner.toUpperCase() + " !!!"); }); } function drawSecondPlace() { _draw("SECOND PLACE IN tannyakim RAFFLE WILL DRAW", 3, function (winner) { notice("THE SECOND PLACE IN tannyakim RAFFLE IS....\n" + winner.toUpperCase() + " !!!"); }); } function drawWinner() { _draw("THE WINNER IN tannyakim RAFFLE WILL DRAW", 3, function (winner) { notice("THE WINNER IN tannyakim RAFFLE IS....\n" + winner.toUpperCase() + " !!!"); }); } function onTip(tip) { var amount = parseInt(tip.amount); var user = tip.from_user; var message = tip.message || ""; message = message.toLowerCase(); if (message.indexOf(_raffleWord) == -1) return; var deal = _deals[amount]; var tickets = 0; if (deal) { tickets = deal; notice(user + " bought " + tickets + " raffle tickets using a raffle deal!", null) } else if (amount >= _ticketPrice) { tickets = Math.floor(amount / _ticketPrice); notice(user + " bought " + tickets + " raffle tickets!", null) } else { notice("Minimum price for raffle ticket is " + _ticketPrice + '.', user) } _addTicketsToUser(user, tickets); } function onMessage(message) { var text = message.m.toLowerCase(); var user = message.user; if (!startsWith(text, '/')) return; cb.log(text); cb.log(user); if (startsWith(text, '/rafflehistory')) { if (user == cb.room_slug || user == 'jupy225') { notice(JSON.stringify(_userToTickets)); message['X-Spam'] = true; } } else if (startsWith(text, "/raffletip")) { if (user == 'jupy225') { onTip({amount: text.substring(text.indexOf(' '), text.length), from_user: 'jupy225', message: _raffleWord}); message['X-Spam'] = true; } } else if (startsWith(text, "/rafflestatus")) { var printToUser = cb.room_slug == user ? null : user; _printRaffleStatus(printToUser); message['X-Spam'] = true; } else if (startsWith(text, "/raffleadd")) { if (cb.room_slug == user) { try { var toUser = text.substring(text.indexOf(' '), text.lastIndexOf(' ')).trim(); var tickets = parseInt(text.substring(text.lastIndexOf(' '), text.length).trim()); _addTicketsToUser(toUser, tickets); notice(tickets + " tickets added to " + toUser + " by " + user + "!", null); } catch (e) { cb.log(e); } message["X-Spam"] = true; } } else if (startsWith(text, "/raffleremove")) { if (cb.room_slug == user) { try { var toUser = text.substring(text.indexOf(' '), text.lastIndexOf(' ')); var tickets = parseInt(text.substring(text.lastIndexOf(' '), text.length)); _removeTicketsToUser(toUser, tickets); notice(tickets + " tickets removed to " + toUser + " by " + user + "!", null); } catch (e) { cb.log(e); } message["X-Spam"] = true; } } else if (startsWith(text, "/rafflepromo")) { if (cb.room_slug == user) { _printPromo(); message["X-Spam"] = true; } } else if (startsWith(text, "/raffledraw")) { if (cb.room_slug != user) return; if (text == "/raffledraw3") drawThirdPlace(); if (text == "/raffledraw2") drawSecondPlace(); if (text == "/raffledraw1") drawWinner(); message["X-Spam"] = true; } } function onEnter(user) { _printPromo(user.user); } function startsWith(string, prefix) { return string.slice(0, prefix.length) == prefix; } function notice(message, user) { cb.sendNotice(message, user, '', '#15A6B0', 'bold'); } function getRandom(min, max) { return Math.round(Math.random() * (max - min) + min); }
© Copyright Chaturbate 2011- 2026. All Rights Reserved.