init commit

This commit is contained in:
zino
2021-02-16 23:07:41 +01:00
parent ec3fc78e0f
commit 12b4ef5db4
5000 changed files with 2596132 additions and 0 deletions

View File

@@ -0,0 +1,531 @@
/*
* Copyright (C) 2016-2020 phantombot.github.io/PhantomBot
*
* 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, either version 3 of the License, or
* (at your option) any later version.
*
* 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 <http://www.gnu.org/licenses/>.
*/
(function() {
var currentGame = null;
var count = 1;
var gamesPlayed;
/**
* @event twitchOnline
*/
$.bind('twitchOnline', function(event) {
if (($.systemTime() - $.inidb.get('panelstats', 'playTimeReset')) >= (480 * 6e4)) {
var uptime = getStreamUptimeSeconds($.channelName);
$.inidb.set('panelstats', 'gameCount', 1);
count = $.inidb.get('panelstats', 'gameCount');
$.inidb.del('streamInfo', 'gamesPlayed');
$.inidb.set('panelstats', 'playTimeStart', $.systemTime());
$.inidb.set('panelstats', 'playTimeReset', $.systemTime());
$.inidb.set('streamInfo', 'gamesPlayed', (count + ': ' + $.twitchcache.getGameTitle() + ' - ' + (uptime / 3600 < 10 ? '0' : '') + Math.floor(uptime / 3600) + ':' + ((uptime % 3600) / 60 < 10 ? '0' : '') + Math.floor((uptime % 3600) / 60) + '='));
}
});
/**
* @event twitchOffline
*/
$.bind('twitchOffline', function(event) {
if (($.systemTime() - $.inidb.get('panelstats', 'playTimeReset')) >= (480 * 6e4)) {
$.inidb.set('panelstats', 'playTimeStart', 0);
$.inidb.set('panelstats', 'playTimeReset', 0);
$.inidb.set('panelstats', 'gameCount', 1);
$.inidb.del('streamInfo', 'gamesPlayed');
}
$.inidb.set('streamInfo', 'downtime', String($.systemTime()));
});
/**
* @event twitchGameChange
*/
$.bind('twitchGameChange', function(event) {
var uptime = getStreamUptimeSeconds($.channelName);
if ($.isOnline($.channelName)) {
$.inidb.set('panelstats', 'playTimeStart', $.systemTime());
if ($.inidb.exists('streamInfo', 'gamesPlayed')) {
$.inidb.incr('panelstats', 'gameCount', 1);
count = $.inidb.get('panelstats', 'gameCount');
gamesPlayed = $.inidb.get('streamInfo', 'gamesPlayed');
gamesPlayed += (count + ': ' + $.twitchcache.getGameTitle() + ' - ' + (uptime / 3600 < 10 ? '0' : '') + Math.floor(uptime / 3600) + ':' + ((uptime % 3600) / 60 < 10 ? '0' : '') + Math.floor((uptime % 3600) / 60) + '=');
$.inidb.set('streamInfo', 'gamesPlayed', gamesPlayed);
} else {
count = $.inidb.get('panelstats', 'gameCount');
$.inidb.set('streamInfo', 'gamesPlayed', (count + ': ' + $.twitchcache.getGameTitle() + ' - ' + (uptime / 3600 < 10 ? '0' : '') + Math.floor(uptime / 3600) + ':' + ((uptime % 3600) / 60 < 10 ? '0' : '') + Math.floor((uptime % 3600) / 60) + '='));
}
}
});
/**
* @function getGamesPlayed()
* @export $
* @return string
*/
function getGamesPlayed() {
if ($.inidb.exists('streamInfo', 'gamesPlayed')) {
var games = $.inidb.get('streamInfo', 'gamesPlayed'),
string = games.split('=').join(', ');
return string;
}
return '';
}
/**
* @function getPlayTime()
* @export $
*/
function getPlayTime() {
var playTime = parseInt($.inidb.get('panelstats', 'playTimeStart')),
time;
if (playTime) {
time = ($.systemTime() - playTime);
return $.getTimeStringMinutes(time / 1000);
} else {
return null;
}
}
/**
* @function isOnline
* @export $
* @param {string} channelName
* @returns {boolean}
*/
function isOnline(channelName) {
if ($.twitchCacheReady.equals('true') && channelName.equalsIgnoreCase($.channelName)) {
return $.twitchcache.isStreamOnlineString().equals('true');
} else {
return !$.twitch.GetStream(channelName).isNull('stream');
}
}
/**
* @function getStatus
* @export $
* @param {string} channelName
* @returns {string}
*/
function getStatus(channelName) {
if ($.twitchCacheReady.equals('true') && channelName.equalsIgnoreCase($.channelName)) {
return ($.twitchcache.getStreamStatus() + '');
} else {
var channelData = $.twitch.GetChannel(channelName);
if (!channelData.isNull('status') && channelData.getInt('_http') == 200) {
return channelData.getString('status');
} else if (channelData.isNull('status') && channelData.getInt('_http') == 200) {
return $.lang.get('common.twitch.no.status');
}
$.log.error('Failed to get the current status: ' + channelData.getString('message'));
return '';
}
}
/**
* @function getGame
* @export $
* @param channelName
* @returns {string}
*/
function getGame(channelName) {
if ($.twitchCacheReady.equals('true') && channelName.equalsIgnoreCase($.channelName)) {
return ($.twitchcache.getGameTitle() + '');
} else {
var channelData = $.twitch.GetChannel(channelName);
if (!channelData.isNull('game') && channelData.getInt('_http') == 200) {
return channelData.getString("game");
} else if (channelData.isNull('game') && channelData.getInt('_http') == 200) {
return $.lang.get('common.twitch.no.game');
}
if (!channelData.isNull('message')) {
$.log.error('Failed to get the current game: ' + channelData.getString('message'));
}
return '';
}
}
/**
* @function getLogo
* @export $
* @param channelName
* @returns {Url}
*/
function getLogo(channelName) {
var channel = $.twitch.GetChannel(channelName);
if (!channel.isNull('logo') && channel.getInt('_http') == 200) {
return channel.getString('logo');
} else {
return 0;
}
}
/**
* @function getStreamUptimeSeconds
* @export $
* @param channelName
* @returns {number}
*/
function getStreamUptimeSeconds(channelName) {
if ($.twitchCacheReady.equals('true') && channelName.equalsIgnoreCase($.channelName)) {
return $.twitchcache.getStreamUptimeSeconds();
} else {
var stream = $.twitch.GetStream(channelName),
now = new Date(),
createdAtDate,
time;
if (stream.isNull('stream')) {
return 0;
}
createdAtDate = new Date(stream.getJSONObject('stream').getString('created_at'));
if (createdAtDate) {
time = (now - createdAtDate);
return Math.floor(time / 1000);
} else {
return 0;
}
}
}
/**
* @function getStreamUptime
* @export $
* @param channelName
* @returns {string}
*/
function getStreamUptime(channelName) {
if ($.twitchCacheReady.equals('true') && channelName.equalsIgnoreCase($.channelName)) {
var uptime = $.twitchcache.getStreamUptimeSeconds();
if (uptime === 0) {
$.consoleLn("Fallback uptime");
var stream = $.twitch.GetStream(channelName),
now = new Date(),
createdAtDate,
time;
if (stream.isNull('stream')) {
return '';
}
createdAtDate = new Date(stream.getJSONObject('stream').getString('created_at'));
time = (now - createdAtDate);
return $.getTimeString(time / 1000);
}
return $.getTimeString(uptime);
} else {
var stream = $.twitch.GetStream(channelName),
now = new Date(),
createdAtDate,
time;
if (stream.isNull('stream')) {
return '';
}
createdAtDate = new Date(stream.getJSONObject('stream').getString('created_at'));
if (createdAtDate) {
time = now - createdAtDate;
return $.getTimeString(time / 1000);
} else {
return '';
}
}
}
/**
* @function getStreamDownTime
* @export $
* @returns {string}
*/
function getStreamDownTime() {
var now = $.systemTime(),
down = $.inidb.get('streamInfo', 'downtime'),
time;
if (down > 0) {
time = (now - down);
return $.getTimeString(time / 1000);
}
return 0;
}
/**
* @function getStreamStartedAt
* @export $
* @param channelName
* @returns {string}
*/
function getStreamStartedAt(channelName) {
if ($.twitchCacheReady.equals('true') && channelName.equalsIgnoreCase($.channelName)) {
if ($.twitchcache.getStreamOnlineString === 'false') {
return 'Stream is offline';
}
createdAtDate = new Date($.twitchcache.getStreamCreatedAt() + '');
return $.dateToString(createdAtDate);
} else {
var stream = $.twitch.GetStream(channelName),
createdAtDate;
if (stream.isNull('stream')) {
return 0;
}
createdAtDate = new Date(stream.getJSONObject('stream').getString('created_at'));
return $.dateToString(createdAtDate);
}
}
/**
* @function getViewers
* @export $
* @param channelName
* @returns {Number}
*/
function getViewers(channelName) {
if ($.twitchCacheReady.equals('true') && channelName.equalsIgnoreCase($.channelName)) {
return $.twitchcache.getViewerCount();
} else {
var stream = $.twitch.GetStream(channelName);
if (!stream.isNull('stream') && stream.getInt('_http') == 200) {
return stream.getJSONObject('stream').getInt('viewers');
} else {
return 0;
}
}
}
/**
* @function getFollows
* @export $
* @param channelName
* @returns {Number}
*/
function getFollows(channelName) {
var channel = $.twitch.GetChannel(channelName);
if (!channel.isNull('followers') && channel.getInt('_http') == 200) {
return channel.getInt('followers');
} else {
return 0;
}
}
/**
* @function getFollowDate
* @export $
* @param username
* @param channelName
*/
function getFollowDate(sender, username, channelName) {
username = $.user.sanitize(username);
channelName = $.user.sanitize(channelName);
var user = $.twitch.GetUserFollowsChannel(username, channelName);
if (user.getInt('_http') === 404) {
return $.lang.get('followhandler.follow.age.datefmt.404');
}
var date = new Date(user.getString('created_at')),
dateFormat = new java.text.SimpleDateFormat($.lang.get('followhandler.follow.age.datefmt')),
dateFinal = dateFormat.format(date);
return dateFinal;
}
/**
* @function getFollowAge
* @export $
* @param username
* @param channelName
*/
function getFollowAge(sender, username, channelName) {
username = $.user.sanitize(username);
channelName = $.user.sanitize(channelName);
var user = $.twitch.GetUserFollowsChannel(username, channelName);
if (user.getInt('_http') === 404) {
$.say($.lang.get('followhandler.follow.age.err.404', $.userPrefix(sender, true), username, channelName));
return;
}
var date = new Date(user.getString('created_at')),
dateFormat = new java.text.SimpleDateFormat("MMMM dd', 'yyyy"),
dateFinal = dateFormat.format(date),
days = Math.floor((($.systemTime() - date.getTime()) / 1000) / 86400);
if (days > 0) {
$.say($.lang.get('followhandler.follow.age.time.days', $.userPrefix(sender, true), username, channelName, dateFinal, days));
} else {
$.say($.lang.get('followhandler.follow.age.time', $.userPrefix(sender, true), username, channelName, dateFinal));
}
}
/**
* @function getChannelAge
* @export $
* @param event
*/
function getChannelAge(event) {
var channelData = $.twitch.GetChannel((!event.getArgs()[0] ? event.getSender() : $.user.sanitize(event.getArgs()[0])));
if (channelData.getInt('_http') === 404) {
$.say($.userPrefix(event.getSender(), true) + $.lang.get('channel.age.user.404'));
return;
}
var date = new Date(channelData.getString('created_at')),
dateFormat = new java.text.SimpleDateFormat("MMMM dd', 'yyyy"),
dateFinal = dateFormat.format(date),
days = Math.floor((Math.abs((date.getTime() - $.systemTime()) / 1000)) / 86400);
if (days > 0) {
$.say($.lang.get('common.get.age.days', $.userPrefix(event.getSender(), true), (!event.getArgs()[0] ? event.getSender() : $.user.sanitize(event.getArgs()[0])), dateFinal, days));
} else {
$.say($.lang.get('common.get.age', $.userPrefix(event.getSender(), true), (!event.getArgs()[0] ? event.getSender() : $.user.sanitize(event.getArgs()[0])), dateFinal));
}
}
/**
* @function getSubscriberCount
* @export $
* @return {number} count
*/
function getSubscriberCount() {
var jsonObject = $.twitch.GetChannelSubscriptions($.channelName.toLowerCase(), 100, 0, true);
if (jsonObject.getInt('_http') !== 200) {
return 0;
}
return jsonObject.getInt('_total') - 1;
}
/**
* @function updateGame
* @export $
* @param {string} channelName
* @param {string} game
* @param {string} sender
* @param {boolean} silent
*/
function updateGame(channelName, game, sender, silent) {
var http = $.twitch.UpdateChannel(channelName, '', game);
if (http.getBoolean('_success')) {
if (http.getInt('_http') == 200) {
if (!silent) {
$.say($.lang.get('common.game.change', http.getString('game')));
}
$.twitchcache.setGameTitle(http.getString('game'));
$.inidb.set('streamInfo', 'game', http.getString('game'));
$.log.event($.username.resolve(sender) + ' changed the current game to ' + http.getString('game'));
if ($.bot.isModuleEnabled('./commands/deathctrCommand.js')) {
$.deathUpdateFile(game);
}
} else {
$.log.error('Failed to change the game. The Twitch API might be having issues.');
$.log.error(http.getString('message'));
}
} else {
$.log.error('Failed to change the game. Make sure you have your api oauth code set. https://phantombot.github.io/PhantomBot/oauth/');
$.log.error(http.getString('_exception') + ' ' + http.getString('_exceptionMessage'));
}
}
/**
* @function updateStatus
* @export $
* @param {string} channelName
* @param {string} status
* @param {string} sender
* @param {boolean} silent
*/
function updateStatus(channelName, status, sender, silent) {
var http = $.twitch.UpdateChannel(channelName, status, '');
if (http.getBoolean('_success')) {
if (http.getInt('_http') == 200) {
if (!silent) {
$.say($.lang.get('common.title.change', http.getString('status')));
}
$.twitchcache.setStreamStatus(http.getString('status'));
$.inidb.set('streamInfo', 'title', http.getString('status'));
$.log.event(sender + ' changed the current status to ' + http.getString('status'));
} else {
$.log.error('Failed to change the status. The Twitch API might be having issues.');
$.log.error(http.getString('message'));
}
} else {
$.log.error('Failed to change the status. Make sure you have your api oauth code set. https://phantombot.github.io/PhantomBot/oauth/');
$.log.error(http.getString('_exception') + ' ' + http.getString('_exceptionMessage'));
}
}
/**
* @function updateStatus
* @export $
* @param {string} channelName
* @param {string} communities
* @param {string} sender
* @param {boolean} silent
*/
function updateCommunity(channelName, communities, sender, silent) {
var http = $.twitch.UpdateCommunities(channelName, communities);
if (http.getBoolean('_success') && http.getInt('_http') == 204) {
if (!silent) {
$.say($.lang.get('common.communities.change'));
}
$.twitchcache.setCommunities(communities);
$.inidb.set('streamInfo', 'communities', communities.join(', '));
} else {
$.log.error('Failed to change the status. Make sure you have your api oauth code set. https://phantombot.github.io/PhantomBot/oauth/');
$.log.error(http.getString('_exception') + ' ' + http.getString('_exceptionMessage'));
}
}
/** Export functions to API */
$.getPlayTime = getPlayTime;
$.getFollows = getFollows;
$.getGame = getGame;
$.getLogo = getLogo;
$.getStatus = getStatus;
$.getStreamStartedAt = getStreamStartedAt;
$.getStreamUptime = getStreamUptime;
$.getStreamUptimeSeconds = getStreamUptimeSeconds;
$.getViewers = getViewers;
$.isOnline = isOnline;
$.updateGame = updateGame;
$.updateStatus = updateStatus;
$.updateCommunity = updateCommunity;
$.getFollowAge = getFollowAge;
$.getFollowDate = getFollowDate;
$.getChannelAge = getChannelAge;
$.getStreamDownTime = getStreamDownTime;
$.getGamesPlayed = getGamesPlayed;
$.getSubscriberCount = getSubscriberCount;
})();