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,202 @@
/*
* 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/>.
*/
/**
* greetingSystem.js
*
* Tags in greetings:
* - (name) The username corresponding to the target user
*/
(function() {
var autoGreetEnabled = $.getSetIniDbBoolean('greeting', 'autoGreetEnabled', false),
defaultJoinMessage = $.getSetIniDbString('greeting', 'defaultJoin', '(name) joined!'),
greetingCooldown = $.getSetIniDbNumber('greeting', 'cooldown', (6 * 36e5)),
/* 6 Hours */
greetingQueue = new java.util.concurrent.ConcurrentLinkedQueue,
lastAutoGreet = $.systemTime();
/**
* @event ircChannelJoin
*/
$.bind('ircChannelJoin', function(event) {
if ($.isOnline($.channelName) && autoGreetEnabled) {
var sender = event.getUser().toLowerCase(),
username = $.resolveRank(sender),
message = $.getIniDbString('greeting', sender, ''),
lastUserGreeting = $.getIniDbNumber('greetingCoolDown', sender, 0),
now = $.systemTime();
if (lastUserGreeting + greetingCooldown < now) {
if (message) {
greetingQueue.add(message.replace('(name)', username));
$.inidb.set('greetingCoolDown', sender, now);
}
}
}
});
/**
* @function doUserGreetings
* Provides timer function for sending greetings into chat. Will delete messages if the
* host disables autoGreetings in the middle of a loop. The reason for a delay is to
* ensure that the output queue does not become overwhelmed.
*/
function doUserGreetings() {
setInterval(function() {
/* Send a greeting out into chat. */
if (!greetingQueue.isEmpty() && autoGreetEnabled) {
$.say(greetingQueue.poll());
}
/* There are greetings, however, autoGreet has been disabled, so destroy the queue. */
if (!greetingQueue.isEmpty() && !autoGreetEnabled) {
greetingQueue = new java.util.concurrent.ConcurrentLinkedQueue;
}
}, 15000, 'scripts::systems::greetingSystem.js');
}
/**
* @function greetingspanelupdate
*/
function greetingspanelupdate() {
autoGreetEnabled = $.getIniDbBoolean('greeting', 'autoGreetEnabled');
defaultJoinMessage = $.getIniDbString('greeting', 'defaultJoin');
greetingCooldown = $.getIniDbNumber('greeting', 'cooldown');
}
/**
* @event command
*/
$.bind('command', function(event) {
var sender = event.getSender().toLowerCase(),
command = event.getCommand(),
args = event.getArgs(),
action = args[0],
cooldown,
message;
/**
* @commandpath greeting - Base command for controlling greetings.
*/
if (command.equalsIgnoreCase('greeting')) {
if (!action) {
if ($.isAdmin(sender)) {
$.say($.whisperPrefix(sender) + $.lang.get('greetingsystem.generalusage.admin'));
} else {
$.say($.whisperPrefix(sender) + $.lang.get('greetingsystem.generalusage.other'));
}
return;
}
/**
* @commandpath greeting cooldown [hours] - Cooldown in hours before displaying a greeting for a person rejoining chat.
*/
if (action.equalsIgnoreCase('cooldown')) {
if (!args[1]) {
$.say($.whisperPrefix(sender) + $.lang.get('greetingsystem.cooldown.usage'));
return;
}
cooldown = parseInt(args[1]);
if (isNaN(cooldown)) {
$.say($.whisperPrefix(sender) + $.lang.get('greetingsystem.cooldown.usage'));
return;
}
greetingCooldown = cooldown * 36e5; // Convert hours to ms
$.inidb.set('greeting', 'cooldown', greetingCooldown);
$.say($.whisperPrefix(sender) + $.lang.get('greetingsystem.cooldown.success', cooldown));
return;
}
/**
* @commandpath greeting toggle - Enable/disable the greeting system.
*/
if (action.equalsIgnoreCase('toggle')) {
autoGreetEnabled = !autoGreetEnabled;
$.setIniDbBoolean('greeting', 'autoGreetEnabled', autoGreetEnabled);
if (autoGreetEnabled) {
$.say($.whisperPrefix(sender) + $.lang.get('greetingsystem.set.autogreet.enabled', $.username.resolve($.botName)));
} else {
$.say($.whisperPrefix(sender) + $.lang.get('greetingsystem.set.autogreet.disabled', $.username.resolve($.botName)));
}
}
/**
* @commandpath greeting setdefault - Set the default greeting message
*/
if (action.equalsIgnoreCase('setdefault')) {
message = args.splice(1, args.length - 1).join(' ');
if (!message) {
$.say($.whisperPrefix(sender) + $.lang.get('greetingsystem.generalusage.admin'));
return;
}
$.inidb.set('greeting', 'defaultJoin', message);
defaultJoinMessage = message;
$.say($.whisperPrefix(sender) + $.lang.get('greetingsystem.set.default.success', defaultJoinMessage));
}
/**
* @commandpath greeting enable [default | message] - Enable greetings and use the default or set a message.
*/
if (action.equalsIgnoreCase('enable')) {
message = args.splice(1, args.length - 1).join(' ');
if (!message) {
$.say($.whisperPrefix(sender) + $.lang.get('greetingsystem.generalusage.other'));
return;
}
if (message.equalsIgnoreCase('default')) {
$.inidb.set('greeting', sender, defaultJoinMessage);
} else {
$.inidb.set('greeting', sender, message);
}
$.say($.whisperPrefix(sender) + $.lang.get('greetingsystem.set.personal.success', $.inidb.get('greeting', sender)));
}
/**
* @commandpath greeting disable - Delete personal greeting and automated greeting at join
*/
if (action.equalsIgnoreCase('disable')) {
if ($.inidb.exists('greeting', sender)) {
$.inidb.del('greeting', sender);
$.say($.whisperPrefix(sender) + $.lang.get('greetingsystem.remove.personal.success'));
}
}
}
});
/**
* @event initReady
*/
$.bind('initReady', function() {
$.registerChatCommand('./systems/greetingSystem.js', 'greeting', 6);
$.registerChatSubcommand('greeting', 'cooldown', 1);
$.registerChatSubcommand('greeting', 'toggle', 1);
$.registerChatSubcommand('greeting', 'setdefault', 2);
$.registerChatSubcommand('greeting', 'enable', 6);
$.registerChatSubcommand('greeting', 'disable', 6);
doUserGreetings();
});
$.greetingspanelupdate = greetingspanelupdate;
})();