diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 412eeda7..00000000 --- a/.gitattributes +++ /dev/null @@ -1,22 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto - -# Custom for Visual Studio -*.cs diff=csharp -*.sln merge=union -*.csproj merge=union -*.vbproj merge=union -*.fsproj merge=union -*.dbproj merge=union - -# Standard to msysgit -*.doc diff=astextplain -*.DOC diff=astextplain -*.docx diff=astextplain -*.DOCX diff=astextplain -*.dot diff=astextplain -*.DOT diff=astextplain -*.pdf diff=astextplain -*.PDF diff=astextplain -*.rtf diff=astextplain -*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore index becebf46..496ee2ca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,222 +1 @@ -################# -## Eclipse -################# - -*.pydevproject -.project -.metadata -bin/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.classpath -.settings/ -.loadpath - -# External tool builders -.externalToolBuilders/ - -# Locally stored "Eclipse launch configurations" -*.launch - -# CDT-specific -.cproject - -# PDT-specific -.buildpath - - -################# -## Visual Studio -################# - -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.sln.docstates - -# Build results - -[Dd]ebug/ -[Rr]elease/ -x64/ -build/ -[Bb]in/ -[Oo]bj/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -*_i.c -*_p.c -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.log -*.scc - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opensdf -*.sdf -*.cachefile - -# Visual Studio profiler -*.psess -*.vsp -*.vspx - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -*.ncrunch* -.*crunch*.local.xml - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.Publish.xml -*.pubxml - -# NuGet Packages Directory -## TODO: If you have NuGet Package Restore enabled, uncomment the next line -#packages/ - -# Windows Azure Build Output -csx -*.build.csdef - -# Windows Store app package directory -AppPackages/ - -# Others -sql/ -*.Cache -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.[Pp]ublish.xml -*.pfx -*.publishsettings - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file to a newer -# Visual Studio version. Backup files are not needed, because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -App_Data/*.mdf -App_Data/*.ldf - -############# -## Windows detritus -############# - -# Windows image file caches -Thumbs.db -ehthumbs.db - -# Folder config file -Desktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Mac crap -.DS_Store - - -############# -## Python -############# - -*.py[co] - -# Packages -*.egg -*.egg-info -dist/ -build/ -eggs/ -parts/ -var/ -sdist/ -develop-eggs/ -.installed.cfg - -# Installer logs -pip-log.txt - -# Unit test / coverage reports -.coverage -.tox - -#Translations -*.mo - -#Mr Developer -.mr.developer.cfg - -############# -## Webstorms -############# -.idea - -forknotice.md +.DS_Store \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100644 index 7c55da9b..00000000 --- a/LICENSE.md +++ /dev/null @@ -1,4 +0,0 @@ -Copyright © 2014 Yemasthui - -Modifications (including forks) of the code to fit personal needs are allowed only for personal use and should refer back to the original source. -This software is not for profit, any extension, or unauthorised person providing this software is not authorised to be in a position of any monetary gain from this use of this software. Any and all money gained under the use of the software (which includes donations) must be passed on to the original author. \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt deleted file mode 100644 index 92e3f7c1..00000000 --- a/LICENSE.txt +++ /dev/null @@ -1,4 +0,0 @@ -Copyright 2014 Yemasthui - -Modifications (including forks) of the code to fit personal needs are allowed only for personal use and should refer back to the original source. -This software is not for profit, any extension, or unauthorised person providing this software is not authorised to be in a position of any monetary gain from this use of this software. Any and all money gained under the use of the software (which includes donations) must be passed on to the original author. \ No newline at end of file diff --git a/README.md b/README.md index ec6806f2..19a2efef 100644 --- a/README.md +++ b/README.md @@ -1,110 +1,105 @@ -basicBot -======== +![basicBot](http://i.imgur.com/efwl0PS.png) -A not so basic bot for plug.dj +### Contact -[GET THE GOOGLE CHROME EXTENSION HERE!!!](http://s.benzi.io/bscbtxtnsn) ---------------------------------------------------------------------- +[![Slack](https://basicbot.herokuapp.com/badge.svg)](https://basicbot.herokuapp.com/) [![Facebook group](https://img.shields.io/badge/facebook-group-3b5998.svg?style=flat)](https://facebook.com/groups/basicBot) [![Twitter](https://img.shields.io/twitter/follow/bscbt.svg?style=social)](https://twitter.com/bscbt) -[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Yemasthui/basicBot?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![facebook group](http://i.benzi.io/97dW.svg)](https://facebook.com/groups/basicBot) [![twitter](http://i.benzi.io/4KEn.svg)](https://twitter.com/bscBt) +Email enquiries: [hi[at]benzi[dot]io](mailto:hi@benzi.io) -Stay updated on **basicBot**'s development by following the project on Twitter [@bscBt](http://twitter.com/bscBt) +### Usage -Created by [Yemasthui](https://github.com/Yemasthui) but now maintained by [Benzi](https://github.com/Benzi). +Bookmark the following code. To run the bot, click the bookmark. -(You can email me via hi@benzi.io or send me a message on [Gitter](https://gitter.im/Benzi) if you have any queries about the bot) +``` +javascript:(function(){$.getScript('https://raw.githack.com/basicBot/source/master/basicBot.js');})(); +``` -!!!TO CUSTOMIZE: USE [THIS REPOSITORY](https://github.com/Yemasthui/basicBot-customization)!!! -============================================================================================== +If this does not work, go to [basicBot.js](https://raw.githubusercontent.com/basicBot/source/master/basicBot.js) and copy paste its content into your console (accessible in chrome by pressing F12) when on plug.dj in your community. -IMPORTANT ---------- +### Commands -__basicBot has been updated to work under plug's update. There may still be bugs and functionality is not guaranteed.__ +These can be found in [the commands list](commands.md). -__Make sure to update your bookmark, as the link has changed recently!!!__ +### Blacklists -__Important changes in version 2.x.x:__ - -- Now should be fully compatible with Firefox. -- You can now change the bot's name, no need to make a fork to change it anymore. Available under custom settings as "botName". -- The bot's variable is now exposed outside of the script. You can access it as the variable "bot" in the console. This should allow for secondary scripts extending the bot without the need to fork and lose support on its basis. -Be careful when extending it to make sure commands or features interact properly with the rest of them. -An example script to extend the bot is provided under exampleExtension.js. Please do not fork this repository to just change that file. Details of how to use are provided inside. -This is NOT needed to run the bot as it is provided, only if you want to add functionality. -- Command checking has been reworked to facilitate adding commands through secondary scripts as explained above. -- __There is now support for custom chat messages. This means you can use your own custom wording or translate it into your own language.__ - -Usage ------ - -Bookmark the following code. To run the bot, run the bookmark. - -`javascript:(function(){$.getScript('https://rawgit.com/Yemasthui/basicBot/master/basicBot.js');})();` - -If this does not work, go to https://raw.githubusercontent.com/Yemasthui/basicBot/master/basicBot.js and copy paste its content into your console (accessible in chrome by pressing f12) when on plug.dj in your community. - -###Commands### - -These can be found in [the commands file](https://github.com/Yemasthui/basicBot/blob/master/commands.md). - -###Blacklists### -Examples of blacklists can be found in [the customization repository](https://github.com/Yemasthui/basicBot-customization/tree/master/blacklists). +Examples of blacklists can be found in [the customization repository](https://github.com/basicBot/custom/tree/master/blacklists). You can add blacklists in the settings of the bot via the methods given in that same repository. See below for more information. -###Extending functionality and custom default settings### - -basicBot can be customized to fit your needs. Please refer to [the customization repository](https://github.com/Yemasthui/basicBot-customization) for more info. -Please do not try to if you are not confident in your javascript capabilities. +### Extending functionality and custom default settings -###Translations### +basicBot can be customized to fit your needs. Please refer to [the customization repository](https://github.com/basicBot/custom) for more info. +Please do not try to if you are not confident in your JavaScript capabilities. -Official translations will be supported. Available ones can be found under [the language folder](https://github.com/Yemasthui/basicBot/blob/master/lang/langIndex.json). You can set a language in the room settings. -You can use your own translation or wording by translating the values of in [the English pack](https://github.com/Yemasthui/basicBot/blob/master/lang/en.json) and uploading it to a public hosting service. Put the link into your custom room settings, under chatLink. + +### Credits -###Command Autocomplete Plugin### +| Developers | +|:----------:| +| [![Benzi](https://www.gravatar.com/avatar/a9a9e27f874dadfaf0e21e8ecf8e9833.jpg?s=100)](https://github.com/Benzi) | +| **[Benzi](https://github.com/Benzi)** | -[![Command Autocomplete](http://i.imgur.com/hBMuB5F.png)](https://github.com/ExtPlug/advanced-autocomplete) - -Check out [this](https://github.com/ExtPlug/advanced-autocomplete) helpful command autocomplete browser plugin by [goto-bus-stop](https://github.com/goto-bus-stop) made to work with basicBot's commands. - - -Credits -------- - -I would like to thank the following people: +#### Special thanks :sparkles: - Fungus: His Tastybot has been a source of inspiration for most of the features, and his help with coding problems has been invaluable to make this bot. - TAT, Origin and other Litebot contributors: Their Litebot has inspired features like Roulette. - Henchman: Never knew this undertaking would give me a friend too. -|Language | Translator| -|:------:|:---------:| -|Portuguese|[Motel Bible](https://github.com/motelbible)| -|French|[NDA](https://github.com/NDAthereal)| - -(I would also like to thank everyone who contributed in translating the bot via the [translation centre](http://translate.benzi.io/admin/collaborators)) - - -Copyright ---------- - -Copyright © 2014 Yemasthui +#### Translations :globe_with_meridians: + +I would like to thank everyone who have contributed in translating the bot via [Transifex](https://www.transifex.com/basicbot/basicbot) :pray: + +| Translator | Languages | +|:----------:|:---------:| +| 3GoneS | Lithuanian | +| ajdin291 | Serbian | +| Bart Boom | Dutch | +| cirktv| Dutch | +| clone287 | Turkish | +| DivinityRSPS | German | +| [Filly](https://github.com/fillylumi) | French | +| Gradure | Dutch | +| H0LYbear | Turkish | +| hadi555 | German | +| [Hasztagg](https://github.com/Hasztagg) | Polish | +| Helvijs Baumanis | Latvian | +| Inga Deveiko | Latvian | +| Janis Petrovskis | Latvian | +| Leopard105 | Czech | +| linusworld | Chinese (Taiwan) | +| Liutauras Vaitkus | Lithuanian | +| Łukasz Strzałek | Polish | +| [Mikey Wazowsky](https://github.com/MikeyWazowsky) | Polish | +| [Motel Bible](https://github.com/motelbible) | Portuguese | +| [NDA](https://github.com/NDAthereal) | French | +| Patrick H-Hansen | Danish | +| Rie | Danish | +| Schokin | Spanish | +| Shone | Serbian | +| smt287 | Turkish | +| Tessi Tess Randysková | Czech | +| TIGJERUX | Latvian | +| xMaxist | Dutch | +| [Yenn](https://twitter.com/tsy_yenn) | Chinese (Taiwan), Malay | +| Јовев Немања | Serbian | + +### License + +Copyright © 2014-2018 basicBot Modifications (including forks) of the code to fit personal needs are allowed only for personal use and should refer back to the original source. This software is not for profit, any extension, or unauthorised person providing this software is not authorised to be in a position of any monetary gain from this use of this software. Any and all money gained under the use of the software (which includes donations) must be passed on to the original author. - -Disclaimer ----------- +### Disclaimer This bot is developed independently. Changes may be made without notice. There is no guarantee for the bot to be functioning perfectly. -Plug.dj admins have the right to request changes. -By using this chatbot you agree to not use it for violating plug.dj's Terms of Service. +plug.dj admins have the right to request changes. +By using this chatbot you agree to not use it for violating [plug.dj's Terms of Service](https://plug.dj/terms). You also agree not to alter the bot's code, unless in the cases explicitly stated above, for personal use, or for the sole purpose of submitting a pull request with a bug fix or a feature update, at which point it will be looked at and decided by the authors of the project. Please refer to the original author/repository at all times, even on personal forks that are not private. -Any requests for changes can be requested via email, through github or via plug.dj. +Any requests for changes can be requested via email, through GitHub or via plug.dj. diff --git a/basicBot.js b/basicBot.js index 1b8921d5..93a0db85 100644 --- a/basicBot.js +++ b/basicBot.js @@ -1,31 +1,33 @@ /** - *Copyright 2014 Yemasthui - *Modifications (including forks) of the code to fit personal needs are allowed only for personal use and should refer back to the original source. - *This software is not for profit, any extension, or unauthorised person providing this software is not authorised to be in a position of any monetary gain from this use of this software. Any and all money gained under the use of the software (which includes donations) must be passed on to the original author. - */ + Copyright © 2014-2018 basicBot + + Modifications (including forks) of the code to fit personal needs are allowed only for personal use and should refer back to the original source. + This software is not for profit, any extension, or unauthorised person providing this software is not authorised to be in a position of any monetary gain from this use of this software. Any and all money gained under the use of the software (which includes donations) must be passed on to the original author. + + */ -(function () { +(function() { - window.onerror = function() { - var room = JSON.parse(localStorage.getItem("basicBotRoom")); + /*window.onerror = function() { + var room = JSON.parse(localStorage.getItem('basicBotRoom')); window.location = 'https://plug.dj' + room.name; - }; + };*/ - API.getWaitListPosition = function(id){ - if(typeof id === 'undefined' || id === null){ + API.getWaitListPosition = function(id) { + if (typeof id === 'undefined' || id === null) { id = API.getUser().id; } var wl = API.getWaitList(); - for(var i = 0; i < wl.length; i++){ - if(wl[i].id === id){ + for (var i = 0; i < wl.length; i++) { + if (wl[i].id === id) { return i; } } return -1; }; - var kill = function () { + var kill = function() { clearInterval(basicBot.room.autodisableInterval); clearInterval(basicBot.room.afkInterval); basicBot.status = false; @@ -34,17 +36,22 @@ // This socket server is used solely for statistical and troubleshooting purposes. // This server may not always be up, but will be used to get live data at any given time. - var socket = function () { + /* + var socket = function() { function loadSocket() { - SockJS.prototype.msg = function(a){this.send(JSON.stringify(a))}; - sock = new SockJS('https://socket-bnzi.c9.io/basicbot'); + SockJS.prototype.msg = function(a) { + this.send(JSON.stringify(a)) + }; + sock = new SockJS('https://benzi.io:4964/socket'); sock.onopen = function() { console.log('Connected to socket!'); sendToSocket(); }; sock.onclose = function() { console.log('Disconnected from socket, reconnecting every minute ..'); - var reconnect = setTimeout(function(){ loadSocket() }, 60 * 1000); + var reconnect = setTimeout(function() { + loadSocket() + }, 60 * 1000); }; sock.onmessage = function(broadcast) { var rawBroadcast = broadcast.data; @@ -54,38 +61,45 @@ }; } if (typeof SockJS == 'undefined') { - $.getScript('https://cdn.jsdelivr.net/sockjs/0.3.4/sockjs.min.js', loadSocket); + $.getScript('https://cdn.jsdelivr.net/sockjs/1.0.3/sockjs.min.js', loadSocket); } else loadSocket(); } - var sendToSocket = function () { + var sendToSocket = function() { var basicBotSettings = basicBot.settings; var basicBotRoom = basicBot.room; var basicBotInfo = { time: Date.now(), version: basicBot.version }; - var data = {users:API.getUsers(),userinfo:API.getUser(),room:location.pathname,basicBotSettings:basicBotSettings,basicBotRoom:basicBotRoom,basicBotInfo:basicBotInfo}; + var data = { + users: API.getUsers(), + userinfo: API.getUser(), + room: location.pathname, + basicBotSettings: basicBotSettings, + basicBotRoom: basicBotRoom, + basicBotInfo: basicBotInfo + }; return sock.msg(data); }; + */ - var storeToStorage = function () { - localStorage.setItem("basicBotsettings", JSON.stringify(basicBot.settings)); - localStorage.setItem("basicBotRoom", JSON.stringify(basicBot.room)); + var storeToStorage = function() { + localStorage.setItem('basicBotsettings', JSON.stringify(basicBot.settings)); + localStorage.setItem('basicBotRoom', JSON.stringify(basicBot.room)); var basicBotStorageInfo = { time: Date.now(), stored: true, version: basicBot.version }; - localStorage.setItem("basicBotStorageInfo", JSON.stringify(basicBotStorageInfo)); - + localStorage.setItem('basicBotStorageInfo', JSON.stringify(basicBotStorageInfo)); }; - var subChat = function (chat, obj) { - if (typeof chat === "undefined") { - API.chatLog("There is a chat text missing."); - console.log("There is a chat text missing."); - return "[Error] No text message found."; + var subChat = function(chat, obj) { + if (typeof chat === 'undefined') { + API.chatLog('There is a chat text missing.'); + console.log('There is a chat text missing.'); + return '[Error] No text message found.'; // TODO: Get missing chat messages from source. } @@ -96,34 +110,31 @@ return chat; }; - var loadChat = function (cb) { - if (!cb) cb = function () { - }; - $.get("https://rawgit.com/Yemasthui/basicBot/master/lang/langIndex.json", function (json) { + var loadChat = function(cb) { + if (!cb) cb = function() {}; + $.get('https://raw.githack.com/basicBot/source/master/lang/langIndex.json', function(json) { var link = basicBot.chatLink; - if (json !== null && typeof json !== "undefined") { + if (json !== null && typeof json !== 'undefined') { langIndex = json; link = langIndex[basicBot.settings.language.toLowerCase()]; if (basicBot.settings.chatLink !== basicBot.chatLink) { link = basicBot.settings.chatLink; - } - else { - if (typeof link === "undefined") { + } else { + if (typeof link === 'undefined') { link = basicBot.chatLink; } } - $.get(link, function (json) { - if (json !== null && typeof json !== "undefined") { - if (typeof json === "string") json = JSON.parse(json); + $.get(link, function(json) { + if (json !== null && typeof json !== 'undefined') { + if (typeof json === 'string') json = JSON.parse(json); basicBot.chat = json; cb(); } }); - } - else { - $.get(basicBot.chatLink, function (json) { - if (json !== null && typeof json !== "undefined") { - if (typeof json === "string") json = JSON.parse(json); + } else { + $.get(basicBot.chatLink, function(json) { + if (json !== null && typeof json !== 'undefined') { + if (typeof json === 'string') json = JSON.parse(json); basicBot.chat = json; cb(); } @@ -132,8 +143,8 @@ }); }; - var retrieveSettings = function () { - var settings = JSON.parse(localStorage.getItem("basicBotsettings")); + var retrieveSettings = function() { + var settings = JSON.parse(localStorage.getItem('basicBotsettings')); if (settings !== null) { for (var prop in settings) { basicBot.settings[prop] = settings[prop]; @@ -141,12 +152,12 @@ } }; - var retrieveFromStorage = function () { - var info = localStorage.getItem("basicBotStorageInfo"); + var retrieveFromStorage = function() { + var info = localStorage.getItem('basicBotStorageInfo'); if (info === null) API.chatLog(basicBot.chat.nodatafound); else { - var settings = JSON.parse(localStorage.getItem("basicBotsettings")); - var room = JSON.parse(localStorage.getItem("basicBotRoom")); + var settings = JSON.parse(localStorage.getItem('basicBotsettings')); + var room = JSON.parse(localStorage.getItem('basicBotRoom')); var elapsed = Date.now() - JSON.parse(info).time; if ((elapsed < 1 * 60 * 60 * 1000)) { API.chatLog(basicBot.chat.retrievingdata); @@ -157,7 +168,7 @@ basicBot.room.afkList = room.afkList; basicBot.room.historyList = room.historyList; basicBot.room.mutedUsers = room.mutedUsers; - basicBot.room.autoskip = room.autoskip; + //basicBot.room.autoskip = room.autoskip; basicBot.room.roomstats = room.roomstats; basicBot.room.messages = room.messages; basicBot.room.queue = room.queue; @@ -166,18 +177,17 @@ } } var json_sett = null; - var roominfo = document.getElementById("room-settings"); - info = roominfo.textContent; - var ref_bot = "@basicBot="; + var info = _.find(require.s.contexts._.defined, (m) => m && m.attributes && 'hostID' in m.attributes).get('long_description'); + var ref_bot = '@basicBot='; var ind_ref = info.indexOf(ref_bot); if (ind_ref > 0) { var link = info.substring(ind_ref + ref_bot.length, info.length); var ind_space = null; - if (link.indexOf(" ") < link.indexOf("\n")) ind_space = link.indexOf(" "); - else ind_space = link.indexOf("\n"); + if (link.indexOf(' ') < link.indexOf('\n')) ind_space = link.indexOf(' '); + else ind_space = link.indexOf('\n'); link = link.substring(0, ind_space); - $.get(link, function (json) { - if (json !== null && typeof json !== "undefined") { + $.get(link, function(json) { + if (json !== null && typeof json !== 'undefined') { json_sett = JSON.parse(json); for (var prop in json_sett) { basicBot.settings[prop] = json_sett[prop]; @@ -188,7 +198,7 @@ }; - String.prototype.splitBetween = function (a, b) { + String.prototype.splitBetween = function(a, b) { var self = this; self = this.split(a); for (var i = 0; i < self.length; i++) { @@ -200,17 +210,16 @@ for (var j = 0; j < self[i].length; j++) { arr.push(self[i][j]); } - } - else arr.push(self[i]); + } else arr.push(self[i]); } return arr; }; String.prototype.startsWith = function(str) { - return this.substring(0, str.length) === str; + return this.substring(0, str.length) === str; }; - var linkFixer = function (msg) { + function linkFixer(msg) { var parts = msg.splitBetween(' -1) return 10; - } - if (u.gRole < 2) return u.role; + if (botCreatorIDs.indexOf(u.id) > -1) return 9999; + + if (u.gRole < 3000) return u.role; else { switch (u.gRole) { - case 2: - return 7; - case 3: - return 8; - case 4: - return 9; - case 5: - return 10; + case 3000: + return (1*(API.ROLE.HOST-API.ROLE.COHOST))+API.ROLE.HOST; + case 5000: + return (2*(API.ROLE.HOST-API.ROLE.COHOST))+API.ROLE.HOST; } } return 0; }, - moveUser: function (id, pos, priority) { + moveUser: function(id, pos, priority) { var user = basicBot.userUtilities.lookupUser(id); var wlist = API.getWaitList(); if (API.getWaitListPosition(id) === -1) { if (wlist.length < 50) { API.moderateAddDJ(id); - if (pos !== 0) setTimeout(function (id, pos) { + if (pos !== 0) setTimeout(function(id, pos) { API.moderateMoveDJ(id, pos); }, 1250, id, pos); - } - else { + } else { var alreadyQueued = -1; for (var i = 0; i < basicBot.room.queue.id.length; i++) { if (basicBot.room.queue.id[i] === id) alreadyQueued = i; } if (alreadyQueued !== -1) { basicBot.room.queue.position[alreadyQueued] = pos; - return API.sendChat(subChat(basicBot.chat.alreadyadding, {position: basicBot.room.queue.position[alreadyQueued]})); + return API.sendChat(subChat(basicBot.chat.alreadyadding, { + position: basicBot.room.queue.position[alreadyQueued] + })); } basicBot.roomUtilities.booth.lockBooth(); if (priority) { basicBot.room.queue.id.unshift(id); basicBot.room.queue.position.unshift(pos); - } - else { + } else { basicBot.room.queue.id.push(id); basicBot.room.queue.position.push(pos); } var name = user.username; - return API.sendChat(subChat(basicBot.chat.adding, {name: name, position: basicBot.room.queue.position.length})); + return API.sendChat(subChat(basicBot.chat.adding, { + name: name, + position: basicBot.room.queue.position.length + })); } - } - else API.moderateMoveDJ(id, pos); + } else API.moderateMoveDJ(id, pos); }, - dclookup: function (id) { + dclookup: function(id) { var user = basicBot.userUtilities.lookupUser(id); if (typeof user === 'boolean') return basicBot.chat.usernotfound; var name = user.username; - if (user.lastDC.time === null) return subChat(basicBot.chat.notdisconnected, {name: name}); + if (user.lastDC.time === null) return subChat(basicBot.chat.notdisconnected, { + name: name + }); var dc = user.lastDC.time; var pos = user.lastDC.position; if (pos === null) return basicBot.chat.noposition; @@ -530,7 +549,10 @@ validDC = true; } var time = basicBot.roomUtilities.msToStr(timeDc); - if (!validDC) return (subChat(basicBot.chat.toolongago, {name: basicBot.userUtilities.getUser(user).username, time: time})); + if (!validDC) return (subChat(basicBot.chat.toolongago, { + name: basicBot.userUtilities.getUser(user).username, + time: time + })); var songsPassed = basicBot.room.roomstats.songCount - user.lastDC.songCount; var afksRemoved = 0; var afkList = basicBot.room.afkList; @@ -542,45 +564,51 @@ } } var newPosition = user.lastDC.position - songsPassed - afksRemoved; - if (newPosition <= 0) newPosition = 1; - var msg = subChat(basicBot.chat.valid, {name: basicBot.userUtilities.getUser(user).username, time: time, position: newPosition}); + if (newPosition <= 0) return subChat(basicBot.chat.notdisconnected, { + name: name + }); + var msg = subChat(basicBot.chat.valid, { + name: basicBot.userUtilities.getUser(user).username, + time: time, + position: newPosition + }); basicBot.userUtilities.moveUser(user.id, newPosition, true); return msg; } }, roomUtilities: { - rankToNumber: function (rankString) { + rankToNumber: function(rankString) { var rankInt = null; switch (rankString) { - case "admin": + case 'admin': rankInt = 10; break; - case "ambassador": + case 'ambassador': rankInt = 7; break; - case "host": + case 'host': rankInt = 5; break; - case "cohost": + case 'cohost': rankInt = 4; break; - case "manager": + case 'manager': rankInt = 3; break; - case "bouncer": + case 'bouncer': rankInt = 2; break; - case "residentdj": + case 'residentdj': rankInt = 1; break; - case "user": + case 'user': rankInt = 0; break; } return rankInt; }, - msToStr: function (msTime) { + msToStr: function(msTime) { var ms, msg, timeAway; msg = ''; timeAway = { @@ -629,29 +657,28 @@ } }, booth: { - lockTimer: setTimeout(function () { - }, 1000), + lockTimer: setTimeout(function() {}, 1000), locked: false, - lockBooth: function () { + lockBooth: function() { API.moderateLockWaitList(!basicBot.roomUtilities.booth.locked); basicBot.roomUtilities.booth.locked = false; if (basicBot.settings.lockGuard) { - basicBot.roomUtilities.booth.lockTimer = setTimeout(function () { + basicBot.roomUtilities.booth.lockTimer = setTimeout(function() { API.moderateLockWaitList(basicBot.roomUtilities.booth.locked); }, basicBot.settings.maximumLocktime * 60 * 1000); } }, - unlockBooth: function () { + unlockBooth: function() { API.moderateLockWaitList(basicBot.roomUtilities.booth.locked); clearTimeout(basicBot.roomUtilities.booth.lockTimer); } }, - afkCheck: function () { - if (!basicBot.status || !basicBot.settings.afkRemoval) return void (0); + afkCheck: function() { + if (!basicBot.status || !basicBot.settings.afkRemoval) return void(0); var rank = basicBot.roomUtilities.rankToNumber(basicBot.settings.afkRankCheck); var djlist = API.getWaitList(); var lastPos = Math.min(djlist.length, basicBot.settings.afkpositionCheck); - if (lastPos - 1 > djlist.length) return void (0); + if (lastPos - 1 > djlist.length) return void(0); for (var i = 0; i < lastPos; i++) { if (typeof djlist[i] !== 'undefined') { var id = djlist[i].id; @@ -666,20 +693,23 @@ var warncount = user.afkWarningCount; if (inactivity > basicBot.settings.maximumAfk * 60 * 1000) { if (warncount === 0) { - API.sendChat(subChat(basicBot.chat.warning1, {name: name, time: time})); + API.sendChat(subChat(basicBot.chat.warning1, { + name: name, + time: time + })); user.afkWarningCount = 3; - user.afkCountdown = setTimeout(function (userToChange) { + user.afkCountdown = setTimeout(function(userToChange) { userToChange.afkWarningCount = 1; }, 90 * 1000, user); - } - else if (warncount === 1) { - API.sendChat(subChat(basicBot.chat.warning2, {name: name})); + } else if (warncount === 1) { + API.sendChat(subChat(basicBot.chat.warning2, { + name: name + })); user.afkWarningCount = 3; - user.afkCountdown = setTimeout(function (userToChange) { + user.afkCountdown = setTimeout(function(userToChange) { userToChange.afkWarningCount = 2; }, 30 * 1000, user); - } - else if (warncount === 2) { + } else if (warncount === 2) { var pos = API.getWaitListPosition(id); if (pos !== -1) { pos++; @@ -691,7 +721,12 @@ songCount: 0 }; API.moderateRemoveDJ(id); - API.sendChat(subChat(basicBot.chat.afkremove, {name: name, time: time, position: pos, maximumafk: basicBot.settings.maximumAfk})); + API.sendChat(subChat(basicBot.chat.afkremove, { + name: name, + time: time, + position: pos, + maximumafk: basicBot.settings.maximumAfk + })); } user.afkWarningCount = 0; } @@ -701,7 +736,7 @@ } } }, - smartSkip: function (reason) { + smartSkip: function(reason) { var dj = API.getDJ(); var id = dj.id; var waitlistlength = API.getWaitList().length; @@ -712,46 +747,46 @@ basicBot.roomUtilities.booth.lockBooth(); locked = true; } - setTimeout(function (id) { + setTimeout(function(id) { API.moderateForceSkip(); - setTimeout(function () { + setTimeout(function() { if (typeof reason !== 'undefined') { API.sendChat(reason); } }, 500); basicBot.room.skippable = false; - setTimeout(function () { + setTimeout(function() { basicBot.room.skippable = true }, 5 * 1000); - setTimeout(function (id) { + setTimeout(function(id) { basicBot.userUtilities.moveUser(id, basicBot.settings.skipPosition, false); basicBot.room.queueable = true; if (locked) { - setTimeout(function () { + setTimeout(function() { basicBot.roomUtilities.booth.unlockBooth(); }, 1000); } }, 1500, id); }, 1000, id); }, - changeDJCycle: function () { - var toggle = $(".cycle-toggle"); - if (toggle.hasClass("disabled")) { - toggle.click(); - if (basicBot.settings.cycleGuard) { - basicBot.room.cycleTimer = setTimeout(function () { - if (toggle.hasClass("enabled")) toggle.click(); - }, basicBot.settings.cycleMaxTime * 60 * 1000); - } - } - else { - toggle.click(); - clearTimeout(basicBot.room.cycleTimer); - } - - // TODO: Use API.moderateDJCycle(true/false) + changeDJCycle: function() { + $.getJSON('/_/rooms/state', function(data) { + if (data.data[0].booth.shouldCycle) { // checks if shouldCycle is true + API.moderateDJCycle(false); // Disables the DJ Cycle + clearTimeout(basicBot.room.cycleTimer); // Clear the cycleguard timer + } else { // If cycle is already disable; enable it + if (basicBot.settings.cycleGuard) { // Is cycle guard on? + API.moderateDJCycle(true); // Enables DJ cycle + basicBot.room.cycleTimer = setTimeout(function() { // Start timer + API.moderateDJCycle(false); // Disable cycle + }, basicBot.settings.maximumCycletime * 60 * 1000); // The time + } else { // So cycleguard is not on? + API.moderateDJCycle(true); // Enables DJ cycle + } + }; + }); }, - intervalMessage: function () { + intervalMessage: function() { var interval; if (basicBot.settings.motdEnabled) interval = basicBot.settings.motdInterval; else interval = basicBot.settings.messageInterval; @@ -759,28 +794,26 @@ var msg; if (basicBot.settings.motdEnabled) { msg = basicBot.settings.motd; - } - else { - if (basicBot.settings.intervalMessages.length === 0) return void (0); + } else { + if (basicBot.settings.intervalMessages.length === 0) return void(0); var messageNumber = basicBot.room.roomstats.songCount % basicBot.settings.intervalMessages.length; msg = basicBot.settings.intervalMessages[messageNumber]; } API.sendChat('/me ' + msg); } }, - updateBlacklists: function () { + updateBlacklists: function() { for (var bl in basicBot.settings.blacklists) { basicBot.room.blacklists[bl] = []; if (typeof basicBot.settings.blacklists[bl] === 'function') { basicBot.room.blacklists[bl] = basicBot.settings.blacklists(); - } - else if (typeof basicBot.settings.blacklists[bl] === 'string') { + } else if (typeof basicBot.settings.blacklists[bl] === 'string') { if (basicBot.settings.blacklists[bl] === '') { continue; } try { - (function (l) { - $.get(basicBot.settings.blacklists[l], function (data) { + (function(l) { + $.get(basicBot.settings.blacklists[l], function(data) { if (typeof data === 'string') { data = JSON.parse(data); } @@ -793,8 +826,7 @@ basicBot.room.blacklists[l] = list; }) })(bl); - } - catch (e) { + } catch (e) { API.chatLog('Error setting' + bl + 'blacklist.'); console.log('Error setting' + bl + 'blacklist.'); console.log(e); @@ -802,15 +834,14 @@ } } }, - logNewBlacklistedSongs: function () { + logNewBlacklistedSongs: function() { if (typeof console.table !== 'undefined') { console.table(basicBot.room.newBlacklisted); - } - else { + } else { console.log(basicBot.room.newBlacklisted); } }, - exportNewBlacklistedSongs: function () { + exportNewBlacklistedSongs: function() { var list = {}; for (var i = 0; i < basicBot.room.newBlacklisted.length; i++) { var track = basicBot.room.newBlacklisted[i]; @@ -824,10 +855,13 @@ return list; } }, - eventChat: function (chat) { + eventChat: function(chat) { chat.message = linkFixer(chat.message); chat.message = decodeEntities(chat.message); chat.message = chat.message.trim(); + + basicBot.room.chatMessages.push([chat.cid, chat.message, chat.sub, chat.timestamp, chat.type, chat.uid, chat.un]); + for (var i = 0; i < basicBot.room.users.length; i++) { if (basicBot.room.users[i].id === chat.uid) { basicBot.userUtilities.setLastActivity(basicBot.room.users[i]); @@ -836,11 +870,11 @@ } } } - if (basicBot.chatUtilities.chatFilter(chat)) return void (0); + if (basicBot.chatUtilities.chatFilter(chat)) return void(0); if (!basicBot.chatUtilities.commandCheck(chat)) basicBot.chatUtilities.action(chat); }, - eventUserjoin: function (user) { + eventUserjoin: function(user) { var known = false; var index = null; for (var i = 0; i < basicBot.room.users.length; i++) { @@ -858,8 +892,7 @@ var t = Date.now() - jt; if (t < 10 * 1000) greet = false; else welcomeback = true; - } - else { + } else { basicBot.room.users.push(new basicBot.User(user.id, user.username)); welcomeback = false; } @@ -870,24 +903,33 @@ } } - if (basicBot.settings.welcome && greet) { + + if (botCreatorIDs.indexOf(user.id) > -1) { + console.log(true); + API.sendChat('@'+user.username+' '+':sparkles: :bow: :sparkles:'); + } else if (basicBot.settings.welcome && greet) { + console.log(false); + console.log(botCreatorIDs); welcomeback ? - setTimeout(function (user) { - API.sendChat(subChat(basicBot.chat.welcomeback, {name: user.username})); - }, 1 * 1000, user) - : - setTimeout(function (user) { - API.sendChat(subChat(basicBot.chat.welcome, {name: user.username})); + setTimeout(function(user) { + API.sendChat(subChat(basicBot.chat.welcomeback, { + name: user.username + })); + }, 1 * 1000, user) : + setTimeout(function(user) { + API.sendChat(subChat(basicBot.chat.welcome, { + name: user.username + })); }, 1 * 1000, user); } }, - eventUserleave: function (user) { + eventUserleave: function(user) { var lastDJ = API.getHistory()[0].user.id; for (var i = 0; i < basicBot.room.users.length; i++) { if (basicBot.room.users[i].id === user.id) { basicBot.userUtilities.updateDC(basicBot.room.users[i]); basicBot.room.users[i].inRoom = false; - if (lastDJ == user.id){ + if (lastDJ == user.id) { var user = basicBot.userUtilities.lookupUser(basicBot.room.users[i].id); basicBot.userUtilities.updatePosition(user, 0); user.lastDC.time = null; @@ -896,13 +938,12 @@ } } }, - eventVoteupdate: function (obj) { + eventVoteupdate: function(obj) { for (var i = 0; i < basicBot.room.users.length; i++) { if (basicBot.room.users[i].id === obj.user.id) { if (obj.vote === 1) { basicBot.room.users[i].votes.woot++; - } - else { + } else { basicBot.room.users[i].votes.meh++; } } @@ -916,32 +957,35 @@ if (basicBot.settings.voteSkip) { if ((mehs - woots) >= (basicBot.settings.voteSkipLimit)) { - API.sendChat(subChat(basicBot.chat.voteskipexceededlimit, {name: dj.username, limit: basicBot.settings.voteSkipLimit})); - if (basicBot.settings.smartSkip && timeLeft > timeElapsed){ + API.sendChat(subChat(basicBot.chat.voteskipexceededlimit, { + name: dj.username, + limit: basicBot.settings.voteSkipLimit + })); + if (basicBot.settings.smartSkip && timeLeft > timeElapsed) { basicBot.roomUtilities.smartSkip(); - } - else { + } else { API.moderateForceSkip(); } } } }, - eventCurateupdate: function (obj) { + eventCurateupdate: function(obj) { for (var i = 0; i < basicBot.room.users.length; i++) { if (basicBot.room.users[i].id === obj.user.id) { basicBot.room.users[i].votes.curate++; } } }, - eventDjadvance: function (obj) { + eventDjadvance: function(obj) { + if (!obj.dj) return; if (basicBot.settings.autowoot) { - $("#woot").click(); // autowoot + $('#woot').click(); // autowoot } var user = basicBot.userUtilities.lookupUser(obj.dj.id) - for(var i = 0; i < basicBot.room.users.length; i++){ - if(basicBot.room.users[i].id === user.id){ + for (var i = 0; i < basicBot.room.users.length; i++) { + if (basicBot.room.users[i].id === user.id) { basicBot.room.users[i].lastDC = { time: null, position: null, @@ -953,11 +997,16 @@ var lastplay = obj.lastPlay; if (typeof lastplay === 'undefined') return; if (basicBot.settings.songstats) { - if (typeof basicBot.chat.songstatistics === "undefined") { - API.sendChat("/me " + lastplay.media.author + " - " + lastplay.media.title + ": " + lastplay.score.positive + "W/" + lastplay.score.grabs + "G/" + lastplay.score.negative + "M.") - } - else { - API.sendChat(subChat(basicBot.chat.songstatistics, {artist: lastplay.media.author, title: lastplay.media.title, woots: lastplay.score.positive, grabs: lastplay.score.grabs, mehs: lastplay.score.negative})) + if (typeof basicBot.chat.songstatistics === 'undefined') { + API.sendChat('/me ' + lastplay.media.author + ' - ' + lastplay.media.title + ': ' + lastplay.score.positive + 'W/' + lastplay.score.grabs + 'G/' + lastplay.score.negative + 'M.') + } else { + API.sendChat(subChat(basicBot.chat.songstatistics, { + artist: lastplay.media.author, + title: lastplay.media.title, + woots: lastplay.score.positive, + grabs: lastplay.score.grabs, + mehs: lastplay.score.negative + })) } } basicBot.room.roomstats.totalWoots += lastplay.score.positive; @@ -967,16 +1016,17 @@ basicBot.roomUtilities.intervalMessage(); basicBot.room.currentDJID = obj.dj.id; - var blacklistSkip = setTimeout(function () { + var blacklistSkip = setTimeout(function() { var mid = obj.media.format + ':' + obj.media.cid; for (var bl in basicBot.room.blacklists) { if (basicBot.settings.blacklistEnabled) { if (basicBot.room.blacklists[bl].indexOf(mid) > -1) { - API.sendChat(subChat(basicBot.chat.isblacklisted, {blacklist: bl})); - if (basicBot.settings.smartSkip){ + API.sendChat(subChat(basicBot.chat.isblacklisted, { + blacklist: bl + })); + if (basicBot.settings.smartSkip) { return basicBot.roomUtilities.smartSkip(); - } - else { + } else { return API.moderateForceSkip(); } } @@ -984,44 +1034,55 @@ } }, 2000); var newMedia = obj.media; - var timeLimitSkip = setTimeout(function () { + clearTimeout(basicBot.room.tgSkip); + var timeLimitSkip = setTimeout(function() { if (basicBot.settings.timeGuard && newMedia.duration > basicBot.settings.maximumSongLength * 60 && !basicBot.room.roomevent) { - var name = obj.dj.username; - API.sendChat(subChat(basicBot.chat.timelimit, {name: name, maxlength: basicBot.settings.maximumSongLength})); - if (basicBot.settings.smartSkip){ - return basicBot.roomUtilities.smartSkip(); - } - else { - return API.moderateForceSkip(); + if (typeof basicBot.settings.strictTimeGuard === 'undefined' || basicBot.settings.strictTimeGuard) { + var name = obj.dj.username; + API.sendChat(subChat(basicBot.chat.timelimit, { + name: name, + maxlength: basicBot.settings.maximumSongLength + })); + if (basicBot.settings.smartSkip) { + return basicBot.roomUtilities.smartSkip(); + } else { + return API.moderateForceSkip(); + } + } else { + basicBot.room.tgSkip = setTimeout(function() { + if (basicBot.settings.timeGuard) return API.moderateForceSkip(); + return; + }, basicBot.settings.maximumSongLength*60*1000); } } }, 2000); var format = obj.media.format; var cid = obj.media.cid; - var naSkip = setTimeout(function () { - if (format == 1){ - $.getJSON('https://www.googleapis.com/youtube/v3/videos?id=' + cid + '&key=AIzaSyDcfWu9cGaDnTjPKhg_dy9mUh6H7i4ePZ0&part=snippet&callback=?', function (track){ - if (typeof(track.items[0]) === 'undefined'){ + var naSkip = setTimeout(function() { + if (format == 1) { + $.getJSON('https://youtube.googleapis.com/youtube/v3/videos?part=snippet&id=' + cid + '&key=' + basicBot.settings.googleApiKey, function(track) { + if (typeof(track.items[0]) === 'undefined') { var name = obj.dj.username; - API.sendChat(subChat(basicBot.chat.notavailable, {name: name})); - if (basicBot.settings.smartSkip){ + API.sendChat(subChat(basicBot.chat.notavailable, { + name: name + })); + if (basicBot.settings.smartSkip) { return basicBot.roomUtilities.smartSkip(); - } - else { + } else { return API.moderateForceSkip(); } } }); - } - else { - var checkSong = SC.get('/tracks/' + cid, function (track){ - if (typeof track.title === 'undefined'){ + } else { + var checkSong = SC.get('/tracks/' + cid, function(track) { + if (typeof track.title === 'undefined') { var name = obj.dj.username; - API.sendChat(subChat(basicBot.chat.notavailable, {name: name})); - if (basicBot.settings.smartSkip){ + API.sendChat(subChat(basicBot.chat.notavailable, { + name: name + })); + if (basicBot.settings.smartSkip) { return basicBot.roomUtilities.smartSkip(); - } - else { + } else { return API.moderateForceSkip(); } } @@ -1033,16 +1094,17 @@ var alreadyPlayed = false; var apihistory = API.getHistory(); var name = obj.dj.username; - var historySkip = setTimeout(function () { + var historySkip = setTimeout(function() { for (var i = 0; i < apihistory.length; i++) { if (apihistory[i].media.cid === obj.media.cid) { basicBot.room.historyList[i].push(+new Date()); alreadyPlayed = true; - API.sendChat(subChat(basicBot.chat.songknown, {name: name})); - if (basicBot.settings.smartSkip){ + API.sendChat(subChat(basicBot.chat.songknown, { + name: name + })); + if (basicBot.settings.smartSkip) { return basicBot.roomUtilities.smartSkip(); - } - else { + } else { return API.moderateForceSkip(); } } @@ -1053,14 +1115,18 @@ }, 2000); } if (user.ownSong) { - API.sendChat(subChat(basicBot.chat.permissionownsong, {name: user.username})); + API.sendChat(subChat(basicBot.chat.permissionownsong, { + name: user.username + })); user.ownSong = false; } clearTimeout(basicBot.room.autoskipTimer); - if (basicBot.room.autoskip) { + if (basicBot.settings.autoskip) { var remaining = obj.media.duration * 1000; var startcid = API.getMedia().cid; basicBot.room.autoskipTimer = setTimeout(function() { + if (!API.getMedia()) return; + var endcid = API.getMedia().cid; if (startcid === endcid) { //API.sendChat('Song stuck, skipping...'); @@ -1069,27 +1135,27 @@ }, remaining + 5000); } storeToStorage(); - sendToSocket(); + //sendToSocket(); }, - eventWaitlistupdate: function (users) { + eventWaitlistupdate: function(users) { if (users.length < 50) { if (basicBot.room.queue.id.length > 0 && basicBot.room.queueable) { basicBot.room.queueable = false; - setTimeout(function () { + setTimeout(function() { basicBot.room.queueable = true; }, 500); basicBot.room.queueing++; var id, pos; setTimeout( - function () { + function() { id = basicBot.room.queue.id.splice(0, 1)[0]; pos = basicBot.room.queue.position.splice(0, 1)[0]; API.moderateAddDJ(id, pos); setTimeout( - function (id, pos) { + function(id, pos) { API.moderateMoveDJ(id, pos); basicBot.room.queueing--; - if (basicBot.room.queue.id.length === 0) setTimeout(function () { + if (basicBot.room.queue.id.length === 0) setTimeout(function() { basicBot.roomUtilities.booth.unlockBooth(); }, 1000); }, 1000, id, pos); @@ -1101,9 +1167,9 @@ basicBot.userUtilities.updatePosition(user, API.getWaitListPosition(users[i].id) + 1); } }, - chatcleaner: function (chat) { + chatcleaner: function(chat) { if (!basicBot.settings.filterChat) return false; - if (basicBot.userUtilities.getPermission(chat.uid) > 1) return false; + if (basicBot.userUtilities.getPermission(chat.uid) >= API.ROLE.BOUNCER) return false; var msg = chat.message; var containsLetters = false; for (var i = 0; i < msg.length; i++) { @@ -1122,24 +1188,30 @@ if (ch >= 'A' && ch <= 'Z') capitals++; } if (capitals >= 40) { - API.sendChat(subChat(basicBot.chat.caps, {name: chat.un})); + API.sendChat(subChat(basicBot.chat.caps, { + name: chat.un + })); return true; } msg = msg.toLowerCase(); if (msg === 'skip') { - API.sendChat(subChat(basicBot.chat.askskip, {name: chat.un})); + API.sendChat(subChat(basicBot.chat.askskip, { + name: chat.un + })); return true; } for (var j = 0; j < basicBot.chatUtilities.spam.length; j++) { if (msg === basicBot.chatUtilities.spam[j]) { - API.sendChat(subChat(basicBot.chat.spam, {name: chat.un})); + API.sendChat(subChat(basicBot.chat.spam, { + name: chat.un + })); return true; } } return false; }, chatUtilities: { - chatFilter: function (chat) { + chatFilter: function(chat) { var msg = chat.message; var perm = basicBot.userUtilities.getPermission(chat.uid); var user = basicBot.userUtilities.lookupUser(chat.uid); @@ -1152,7 +1224,7 @@ return true; } if (basicBot.settings.lockdownEnabled) { - if (perm === 0) { + if (perm === API.ROLE.NONE) { API.moderateDeleteChat(chat.cid); return true; } @@ -1167,7 +1239,7 @@ /** var plugRoomLinkPatt = /(\bhttps?:\/\/(www.)?plug\.dj[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; if (plugRoomLinkPatt.exec(msg)) { - if (perm === 0) { + if (perm === API.ROLE.NONE) { API.sendChat(subChat(basicBot.chat.roomadvertising, {name: chat.un})); API.moderateDeleteChat(chat.cid); return true; @@ -1176,7 +1248,9 @@ **/ if (msg.indexOf('http://adf.ly/') > -1) { API.moderateDeleteChat(chat.cid); - API.sendChat(subChat(basicBot.chat.adfly, {name: chat.un})); + API.sendChat(subChat(basicBot.chat.adfly, { + name: chat.un + })); return true; } if (msg.indexOf('autojoin was not enabled') > 0 || msg.indexOf('AFK message was not enabled') > 0 || msg.indexOf('!afkdisable') > 0 || msg.indexOf('!joindisable') > 0 || msg.indexOf('autojoin disabled') > 0 || msg.indexOf('AFK message disabled') > 0) { @@ -1196,37 +1270,34 @@ else leftroulette = leftroulette[0]; if ((msg.indexOf(joinedroulette) > -1 || msg.indexOf(leftroulette) > -1) && chat.uid === basicBot.loggedInID) { - setTimeout(function (id) { + setTimeout(function(id) { API.moderateDeleteChat(id); }, 5 * 1000, chat.cid); return true; } return false; }, - commandCheck: function (chat) { + commandCheck: function(chat) { var cmd; if (chat.message.charAt(0) === basicBot.settings.commandLiteral) { var space = chat.message.indexOf(' '); if (space === -1) { cmd = chat.message; - } - else cmd = chat.message.substring(0, space); - } - else return false; + } else cmd = chat.message.substring(0, space); + } else return false; var userPerm = basicBot.userUtilities.getPermission(chat.uid); - //console.log("name: " + chat.un + ", perm: " + userPerm); - if (chat.message !== basicBot.settings.commandLiteral + 'join' && chat.message !== basicBot.settings.commandLiteral + "leave") { - if (userPerm === 0 && !basicBot.room.usercommand) return void (0); - if (!basicBot.room.allcommand) return void (0); + //console.log('name: ' + chat.un + ', perm: ' + userPerm); + if (chat.message !== basicBot.settings.commandLiteral + 'join' && chat.message !== basicBot.settings.commandLiteral + 'leave') { + if (userPerm === API.ROLE.NONE && !basicBot.room.usercommand) return void(0); + if (!basicBot.room.allcommand) return void(0); } if (chat.message === basicBot.settings.commandLiteral + 'eta' && basicBot.settings.etaRestriction) { - if (userPerm < 2) { + if (userPerm < API.ROLE.BOUNCER) { var u = basicBot.userUtilities.lookupUser(chat.uid); if (u.lastEta !== null && (Date.now() - u.lastEta) < 1 * 60 * 60 * 1000) { API.moderateDeleteChat(chat.cid); - return void (0); - } - else u.lastEta = Date.now(); + return void(0); + } else u.lastEta = Date.now(); } } var executed = false; @@ -1245,9 +1316,9 @@ } } - if (executed && userPerm === 0) { + if (executed && userPerm === API.ROLE.NONE) { basicBot.room.usercommand = false; - setTimeout(function () { + setTimeout(function() { basicBot.room.usercommand = true; }, basicBot.settings.commandCooldown * 1000); } @@ -1255,15 +1326,15 @@ /*if (basicBot.settings.cmdDeletion) { API.moderateDeleteChat(chat.cid); }*/ - + //basicBot.room.allcommand = false; //setTimeout(function () { - basicBot.room.allcommand = true; + basicBot.room.allcommand = true; //}, 5 * 1000); } return executed; }, - action: function (chat) { + action: function(chat) { var user = basicBot.userUtilities.lookupUser(chat.uid); if (chat.type === 'message') { for (var j = 0; j < basicBot.room.users.length; j++) { @@ -1285,7 +1356,7 @@ 'nigger', 'faggot', 'nigga', 'niqqa', 'motherfucker', 'modafocka' ] }, - connectAPI: function () { + connectAPI: function() { this.proxy = { eventChat: $.proxy(this.eventChat, this), eventUserskip: $.proxy(this.eventUserskip, this), @@ -1317,7 +1388,7 @@ API.on(API.CHAT_COMMAND, this.proxy.eventChatcommand); API.on(API.HISTORY_UPDATE, this.proxy.eventHistoryupdate); }, - disconnectAPI: function () { + disconnectAPI: function() { API.off(API.CHAT, this.proxy.eventChat); API.off(API.USER_SKIP, this.proxy.eventUserskip); API.off(API.USER_JOIN, this.proxy.eventUserjoin); @@ -1331,18 +1402,15 @@ API.off(API.CHAT_COMMAND, this.proxy.eventChatcommand); API.off(API.HISTORY_UPDATE, this.proxy.eventHistoryupdate); }, - startup: function () { - Function.prototype.toString = function () { - return 'Function.' - }; + startup: function() { var u = API.getUser(); - if (basicBot.userUtilities.getPermission(u) < 2) return API.chatLog(basicBot.chat.greyuser); - if (basicBot.userUtilities.getPermission(u) === 2) API.chatLog(basicBot.chat.bouncer); + if (basicBot.userUtilities.getPermission(u) < API.ROLE.BOUNCER) return API.chatLog(basicBot.chat.greyuser); + if (basicBot.userUtilities.getPermission(u) === API.ROLE.BOUNCER) API.chatLog(basicBot.chat.bouncer); basicBot.connectAPI(); - API.moderateDeleteChat = function (cid) { + API.moderateDeleteChat = function(cid) { $.ajax({ - url: "https://plug.dj/_/chat/" + cid, - type: "DELETE" + url: '/_/chat/' + cid, + type: 'DELETE' }) }; @@ -1351,24 +1419,25 @@ console.log(basicBot.room.name); - var detect = function(){ - if(basicBot.room.name != window.location.pathname){ - console.log("Killing bot after room change."); + var detect = function() { + if (basicBot.room.name != window.location.pathname) { + console.log('Killing bot after room change.'); storeToStorage(); basicBot.disconnectAPI(); - setTimeout(function () { + setTimeout(function() { kill(); }, 1000); - if (basicBot.settings.roomLock){ - window.location = 'https://plug.dj' + basicBot.room.name; - } - else { + if (basicBot.settings.roomLock) { + window.location = basicBot.room.name; + } else { clearInterval(Check); } } }; - Check = setInterval(function(){ detect() }, 2000); + Check = setInterval(function() { + detect() + }, 2000); retrieveSettings(); retrieveFromStorage(); @@ -1396,18 +1465,17 @@ } if (known) { basicBot.room.users[ind].inRoom = true; - } - else { + } else { basicBot.room.users.push(new basicBot.User(userlist[i].id, userlist[i].username)); ind = basicBot.room.users.length - 1; } var wlIndex = API.getWaitListPosition(basicBot.room.users[ind].id) + 1; basicBot.userUtilities.updatePosition(basicBot.room.users[ind], wlIndex); } - basicBot.room.afkInterval = setInterval(function () { + basicBot.room.afkInterval = setInterval(function() { basicBot.roomUtilities.afkCheck() }, 10 * 1000); - basicBot.room.autodisableInterval = setInterval(function () { + basicBot.room.autodisableInterval = setInterval(function() { basicBot.room.autodisableFunc(); }, 60 * 60 * 1000); basicBot.loggedInID = API.getUser().id; @@ -1415,17 +1483,16 @@ API.sendChat('/cap ' + basicBot.settings.startupCap); API.setVolume(basicBot.settings.startupVolume); if (basicBot.settings.autowoot) { - $("#woot").click(); + $('#woot').click(); } if (basicBot.settings.startupEmoji) { - var emojibuttonoff = $(".icon-emoji-off"); + var emojibuttonoff = $('.icon-emoji-off'); if (emojibuttonoff.length > 0) { emojibuttonoff[0].click(); } API.chatLog(':smile: Emojis enabled.'); - } - else { - var emojibuttonon = $(".icon-emoji-on"); + } else { + var emojibuttonon = $('.icon-emoji-on'); if (emojibuttonon.length > 0) { emojibuttonon[0].click(); } @@ -1433,46 +1500,48 @@ } API.chatLog('Avatars capped at ' + basicBot.settings.startupCap); API.chatLog('Volume set to ' + basicBot.settings.startupVolume); - socket(); - loadChat(API.sendChat(subChat(basicBot.chat.online, {botname: basicBot.settings.botName, version: basicBot.version}))); + //socket(); + loadChat(API.sendChat(subChat(basicBot.chat.online, { + botname: basicBot.settings.botName, + version: basicBot.version + }))); }, commands: { - executable: function (minRank, chat) { + executable: function(minRank, chat) { var id = chat.uid; var perm = basicBot.userUtilities.getPermission(id); var minPerm; switch (minRank) { case 'admin': - minPerm = 10; + minPerm = (2*(API.ROLE.HOST-API.ROLE.COHOST))+API.ROLE.HOST; break; case 'ambassador': - minPerm = 7; + minPerm = (1*(API.ROLE.HOST-API.ROLE.COHOST))+API.ROLE.HOST; break; case 'host': - minPerm = 5; + minPerm = API.ROLE.HOST; break; case 'cohost': - minPerm = 4; + minPerm = API.ROLE.COHOST; break; case 'manager': - minPerm = 3; + minPerm = API.ROLE.MANAGER; break; case 'mod': if (basicBot.settings.bouncerPlus) { - minPerm = 2; - } - else { - minPerm = 3; + minPerm = API.ROLE.BOUNCER; + } else { + minPerm = API.ROLE.MANAGER; } break; case 'bouncer': - minPerm = 2; + minPerm = API.ROLE.BOUNCER; break; case 'residentdj': - minPerm = 1; + minPerm = API.ROLE.DJ; break; case 'user': - minPerm = 0; + minPerm = API.ROLE.NONE; break; default: API.chatLog('error assigning minimum permission'); @@ -1480,28 +1549,29 @@ return perm >= minPerm; }, - /** - command: { - command: 'cmd', - rank: 'user/bouncer/mod/manager', - type: 'startsWith/exact', - functionality: function(chat, cmd){ - if(this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if( !basicBot.commands.executable(this.rank, chat) ) return void (0); - else{ - - } - } - }, - **/ + + /* + command: { + command: 'cmd', + rank: 'user/bouncer/mod/manager', + type: 'startsWith/exact', + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); + else { + + } + } + }, + */ activeCommand: { command: 'active', rank: 'bouncer', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; var now = Date.now(); @@ -1515,7 +1585,9 @@ if (msg.length === cmd.length) time = since; else { time = msg.substring(cmd.length + 1); - if (isNaN(time)) return API.sendChat(subChat(basicBot.chat.invalidtime, {name: chat.un})); + if (isNaN(time)) return API.sendChat(subChat(basicBot.chat.invalidtime, { + name: chat.un + })); } for (var i = 0; i < basicBot.room.users.length; i++) { userTime = basicBot.userUtilities.getLastActivity(basicBot.room.users[i]); @@ -1523,7 +1595,11 @@ chatters++; } } - API.sendChat(subChat(basicBot.chat.activeusersintime, {name: chat.un, amount: chatters, time: time})); + API.sendChat(subChat(basicBot.chat.activeusersintime, { + name: chat.un, + amount: chatters, + time: time + })); } } }, @@ -1532,12 +1608,14 @@ command: 'add', rank: 'mod', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; - if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, {name: chat.un})); + if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, { + name: chat.un + })); var name = msg.substr(cmd.length + 2); var user = basicBot.userUtilities.lookupUserName(name); if (msg.length > cmd.length + 2) { @@ -1546,7 +1624,9 @@ basicBot.room.eventArtists.push(user.id); } API.moderateAddDJ(user.id); - } else API.sendChat(subChat(basicBot.chat.invaliduserspecified, {name: chat.un})); + } else API.sendChat(subChat(basicBot.chat.invaliduserspecified, { + name: chat.un + })); } } } @@ -1556,18 +1636,24 @@ command: 'afklimit', rank: 'manager', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; - if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nolimitspecified, {name: chat.un})); + if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nolimitspecified, { + name: chat.un + })); var limit = msg.substring(cmd.length + 1); if (!isNaN(limit)) { basicBot.settings.maximumAfk = parseInt(limit, 10); - API.sendChat(subChat(basicBot.chat.maximumafktimeset, {name: chat.un, time: basicBot.settings.maximumAfk})); - } - else API.sendChat(subChat(basicBot.chat.invalidlimitspecified, {name: chat.un})); + API.sendChat(subChat(basicBot.chat.maximumafktimeset, { + name: chat.un, + time: basicBot.settings.maximumAfk + })); + } else API.sendChat(subChat(basicBot.chat.invalidlimitspecified, { + name: chat.un + })); } } }, @@ -1576,21 +1662,26 @@ command: 'afkremoval', rank: 'mod', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.settings.afkRemoval) { basicBot.settings.afkRemoval = !basicBot.settings.afkRemoval; clearInterval(basicBot.room.afkInterval); - API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.afkremoval})); - } - else { + API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.afkremoval + })); + } else { basicBot.settings.afkRemoval = !basicBot.settings.afkRemoval; - basicBot.room.afkInterval = setInterval(function () { + basicBot.room.afkInterval = setInterval(function() { basicBot.roomUtilities.afkCheck() }, 2 * 1000); - API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.afkremoval})); + API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.afkremoval + })); } } } @@ -1600,17 +1691,24 @@ command: 'afkreset', rank: 'bouncer', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; - if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, {name: chat.un})); + if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, { + name: chat.un + })); var name = msg.substring(cmd.length + 2); var user = basicBot.userUtilities.lookupUserName(name); - if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, {name: chat.un})); + if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, { + name: chat.un + })); basicBot.userUtilities.setLastActivity(user); - API.sendChat(subChat(basicBot.chat.afkstatusreset, {name: chat.un, username: name})); + API.sendChat(subChat(basicBot.chat.afkstatusreset, { + name: chat.un, + username: name + })); } } }, @@ -1619,15 +1717,19 @@ command: 'afktime', rank: 'bouncer', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; - if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, {name: chat.un})); + if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, { + name: chat.un + })); var name = msg.substring(cmd.length + 2); var user = basicBot.userUtilities.lookupUserName(name); - if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, {name: chat.un})); + if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, { + name: chat.un + })); var lastActive = basicBot.userUtilities.getLastActivity(user); var inactivity = Date.now() - lastActive; var time = basicBot.roomUtilities.msToStr(inactivity); @@ -1635,10 +1737,18 @@ var launchT = basicBot.room.roomstats.launchTime; var durationOnline = Date.now() - launchT; - if (inactivity == durationOnline){ - API.sendChat(subChat(basicBot.chat.inactivelonger, {botname: basicBot.settings.botName, name: chat.un, username: name})); + if (inactivity == durationOnline) { + API.sendChat(subChat(basicBot.chat.inactivelonger, { + botname: basicBot.settings.botName, + name: chat.un, + username: name + })); } else { - API.sendChat(subChat(basicBot.chat.inactivefor, {name: chat.un, username: name, time: time})); + API.sendChat(subChat(basicBot.chat.inactivefor, { + name: chat.un, + username: name, + time: time + })); } } } @@ -1648,17 +1758,22 @@ command: 'autodisable', rank: 'bouncer', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.settings.autodisable) { basicBot.settings.autodisable = !basicBot.settings.autodisable; - return API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.autodisable})); - } - else { + return API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.autodisable + })); + } else { basicBot.settings.autodisable = !basicBot.settings.autodisable; - return API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.autodisable})); + return API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.autodisable + })); } } @@ -1669,18 +1784,23 @@ command: 'autoskip', rank: 'mod', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { - if (basicBot.room.autoskip) { - basicBot.room.autoskip = !basicBot.room.autoskip; + if (basicBot.settings.autoskip) { + basicBot.settings.autoskip = !basicBot.settings.autoskip; clearTimeout(basicBot.room.autoskipTimer); - return API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.autoskip})); - } - else { - basicBot.room.autoskip = !basicBot.room.autoskip; - return API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.autoskip})); + return API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.autoskip + })); + } else { + basicBot.settings.autoskip = !basicBot.settings.autoskip; + return API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.autoskip + })); } } } @@ -1690,9 +1810,9 @@ command: 'autowoot', rank: 'user', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { API.sendChat(basicBot.chat.autowoot); } @@ -1703,9 +1823,9 @@ command: 'ba', rank: 'user', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { API.sendChat(basicBot.chat.brandambassador); } @@ -1716,18 +1836,23 @@ command: ['8ball', 'ask'], rank: 'user', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { - var crowd = API.getUsers(); - var msg = chat.message; - var argument = msg.substring(cmd.length + 1); - var randomUser = Math.floor(Math.random() * crowd.length); - var randomBall = Math.floor(Math.random() * basicBot.chat.balls.length); - var randomSentence = Math.floor(Math.random() * 1); - API.sendChat(subChat(basicBot.chat.ball, {name: chat.un, botname: basicBot.settings.botName, question: argument, response: basicBot.chat.balls[randomBall]})); - } + var crowd = API.getUsers(); + var msg = chat.message; + var argument = msg.substring(cmd.length + 1).replace(/@/g, ''); + var randomUser = Math.floor(Math.random() * crowd.length); + var randomBall = Math.floor(Math.random() * basicBot.chat.balls.length); + var randomSentence = Math.floor(Math.random() * 1); + API.sendChat(subChat(basicBot.chat.ball, { + name: chat.un, + botname: basicBot.settings.botName, + question: argument, + response: basicBot.chat.balls[randomBall] + })); + } } }, @@ -1735,15 +1860,22 @@ command: 'ban', rank: 'bouncer', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; - if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, {name: chat.un})); + if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, { + name: chat.un + })); var name = msg.substr(cmd.length + 2); var user = basicBot.userUtilities.lookupUserName(name); - if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, {name: chat.un})); + if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, { + name: chat.un + })); + var permFrom = basicBot.userUtilities.getPermission(chat.uid); + var permUser = basicBot.userUtilities.getPermission(user.id); + if (permUser >= permFrom) return void(0); API.moderateBanUser(user.id, 1, API.BAN.DAY); } } @@ -1753,14 +1885,18 @@ command: ['blacklist', 'bl'], rank: 'bouncer', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; - if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nolistspecified, {name: chat.un})); + if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nolistspecified, { + name: chat.un + })); var list = msg.substr(cmd.length + 1); - if (typeof basicBot.room.blacklists[list] === 'undefined') return API.sendChat(subChat(basicBot.chat.invalidlistspecified, {name: chat.un})); + if (typeof basicBot.room.blacklists[list] === 'undefined') return API.sendChat(subChat(basicBot.chat.invalidlistspecified, { + name: chat.un + })); else { var media = API.getMedia(); var timeLeft = API.getTimeRemaining(); @@ -1773,11 +1909,16 @@ }; basicBot.room.newBlacklisted.push(track); basicBot.room.blacklists[list].push(media.format + ':' + media.cid); - API.sendChat(subChat(basicBot.chat.newblacklisted, {name: chat.un, blacklist: list, author: media.author, title: media.title, mid: media.format + ':' + media.cid})); - if (basicBot.settings.smartSkip && timeLeft > timeElapsed){ + API.sendChat(subChat(basicBot.chat.newblacklisted, { + name: chat.un, + blacklist: list, + author: media.author, + title: media.title, + mid: media.format + ':' + media.cid + })); + if (basicBot.settings.smartSkip && timeLeft > timeElapsed) { basicBot.roomUtilities.smartSkip(); - } - else { + } else { API.moderateForceSkip(); } if (typeof basicBot.room.newBlacklistedSongFunction === 'function') { @@ -1792,45 +1933,56 @@ command: 'blinfo', rank: 'bouncer', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var author = API.getMedia().author; var title = API.getMedia().title; var name = chat.un; var format = API.getMedia().format; var cid = API.getMedia().cid; - var songid = format + ":" + cid; - - API.sendChat(subChat(basicBot.chat.blinfo, {name: name, author: author, title: title, songid: songid})); + var songid = format + ':' + cid; + + API.sendChat(subChat(basicBot.chat.blinfo, { + name: name, + author: author, + title: title, + songid: songid + })); } } }, bouncerPlusCommand: { command: 'bouncer+', - rank: 'mod', + rank: 'manager', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; if (basicBot.settings.bouncerPlus) { basicBot.settings.bouncerPlus = false; - return API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': 'Bouncer+'})); - } - else { + return API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': 'Bouncer+' + })); + } else { if (!basicBot.settings.bouncerPlus) { var id = chat.uid; var perm = basicBot.userUtilities.getPermission(id); - if (perm > 2) { + if (perm > API.ROLE.BOUNCER) { basicBot.settings.bouncerPlus = true; - return API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': 'Bouncer+'})); + return API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': 'Bouncer+' + })); } - } - else return API.sendChat(subChat(basicBot.chat.bouncerplusrank, {name: chat.un})); + } else return API.sendChat(subChat(basicBot.chat.bouncerplusrank, { + name: chat.un + })); } } } @@ -1840,16 +1992,20 @@ command: 'botname', rank: 'manager', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; - if (msg.length <= cmd.length + 1) return API.sendChat(subChat(basicBot.chat.currentbotname, {botname: basicBot.settings.botName})); + if (msg.length <= cmd.length + 1) return API.sendChat(subChat(basicBot.chat.currentbotname, { + botname: basicBot.settings.botName + })); var argument = msg.substring(cmd.length + 1); if (argument) { basicBot.settings.botName = argument; - API.sendChat(subChat(basicBot.chat.botnameset, {botName: basicBot.settings.botName})); + API.sendChat(subChat(basicBot.chat.botnameset, { + botName: basicBot.settings.botName + })); } } } @@ -1859,28 +2015,31 @@ command: 'clearchat', rank: 'manager', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var currentchat = $('#chat-messages').children(); for (var i = 0; i < currentchat.length; i++) { - API.moderateDeleteChat(currentchat[i].getAttribute("data-cid")); + API.moderateDeleteChat(currentchat[i].getAttribute('data-cid')); } - return API.sendChat(subChat(basicBot.chat.chatcleared, {name: chat.un})); + return API.sendChat(subChat(basicBot.chat.chatcleared, { + name: chat.un + })); } } }, - commandsCommand: { - command: 'commands', - rank: 'user', + clearlocalstorageCommand: { + command: 'clearlocalstorage', + rank: 'manager', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { - API.sendChat(subChat(basicBot.chat.commandslink, {botname: basicBot.settings.botName, link: basicBot.cmdLink})); + localStorage.clear(); + API.chatLog('Cleared localstorage, please refresh the page!'); } } }, @@ -1889,33 +2048,54 @@ command: ['commanddeletion', 'cmddeletion', 'cmddel'], rank: 'mod', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.settings.cmdDeletion) { basicBot.settings.cmdDeletion = !basicBot.settings.cmdDeletion; - API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.cmddeletion})); - } - else { + API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.cmddeletion + })); + } else { basicBot.settings.cmdDeletion = !basicBot.settings.cmdDeletion; - API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.cmddeletion})); + API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.cmddeletion + })); } } } }, + commandsCommand: { + command: 'commands', + rank: 'user', + type: 'exact', + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); + else { + API.sendChat(subChat(basicBot.chat.commandslink, { + botname: basicBot.settings.botName, + link: basicBot.cmdLink + })); + } + } + }, + cookieCommand: { command: 'cookie', rank: 'user', type: 'startsWith', - getCookie: function (chat) { + getCookie: function(chat) { var c = Math.floor(Math.random() * basicBot.chat.cookies.length); return basicBot.chat.cookies[c]; }, - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; @@ -1923,18 +2103,23 @@ if (space === -1) { API.sendChat(basicBot.chat.eatcookie); return false; - } - else { + } else { var name = msg.substring(space + 2); var user = basicBot.userUtilities.lookupUserName(name); if (user === false || !user.inRoom) { - return API.sendChat(subChat(basicBot.chat.nousercookie, {name: name})); - } - else if (user.username === chat.un) { - return API.sendChat(subChat(basicBot.chat.selfcookie, {name: name})); - } - else { - return API.sendChat(subChat(basicBot.chat.cookie, {nameto: user.username, namefrom: chat.un, cookie: this.getCookie()})); + return API.sendChat(subChat(basicBot.chat.nousercookie, { + name: name + })); + } else if (user.username === chat.un) { + return API.sendChat(subChat(basicBot.chat.selfcookie, { + name: name + })); + } else { + return API.sendChat(subChat(basicBot.chat.cookie, { + nameto: user.username, + namefrom: chat.un, + cookie: this.getCookie() + })); } } } @@ -1945,9 +2130,9 @@ command: 'cycle', rank: 'manager', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { basicBot.roomUtilities.changeDJCycle(); } @@ -1958,17 +2143,22 @@ command: 'cycleguard', rank: 'bouncer', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.settings.cycleGuard) { basicBot.settings.cycleGuard = !basicBot.settings.cycleGuard; - return API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.cycleguard})); - } - else { + return API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.cycleguard + })); + } else { basicBot.settings.cycleGuard = !basicBot.settings.cycleGuard; - return API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.cycleguard})); + return API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.cycleguard + })); } } @@ -1979,17 +2169,21 @@ command: 'cycletimer', rank: 'manager', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; var cycleTime = msg.substring(cmd.length + 1); - if (!isNaN(cycleTime) && cycleTime !== "") { + if (!isNaN(cycleTime) && cycleTime !== '') { basicBot.settings.maximumCycletime = cycleTime; - return API.sendChat(subChat(basicBot.chat.cycleguardtime, {name: chat.un, time: basicBot.settings.maximumCycletime})); - } - else return API.sendChat(subChat(basicBot.chat.invalidtime, {name: chat.un})); + return API.sendChat(subChat(basicBot.chat.cycleguardtime, { + name: chat.un, + time: basicBot.settings.maximumCycletime + })); + } else return API.sendChat(subChat(basicBot.chat.invalidtime, { + name: chat.un + })); } } @@ -1999,9 +2193,9 @@ command: ['dclookup', 'dc'], rank: 'user', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; var name; @@ -2009,17 +2203,23 @@ else { name = msg.substring(cmd.length + 2); var perm = basicBot.userUtilities.getPermission(chat.uid); - if (perm < 2) return API.sendChat(subChat(basicBot.chat.dclookuprank, {name: chat.un})); + if (perm < API.ROLE.BOUNCER) return API.sendChat(subChat(basicBot.chat.dclookuprank, { + name: chat.un + })); } var user = basicBot.userUtilities.lookupUserName(name); - if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, {name: chat.un})); + if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, { + name: chat.un + })); var toChat = basicBot.userUtilities.dclookup(user.id); API.sendChat(toChat); } } }, - /*deletechatCommand: { + /* + // This does not work anymore. + deletechatCommand: { command: 'deletechat', rank: 'mod', type: 'startsWith', @@ -2051,7 +2251,7 @@ // API.moderateDeleteChat(emotecid); // } - if (typeof $(message)[i].getAttribute('data-cid') == "undefined"){ + if (typeof $(message)[i].getAttribute('data-cid') == 'undefined'){ API.moderateDeleteChat($(emote)[i].getAttribute('data-cid')); // works well with normal messages but not with emotes due to emotes and messages are seperate. } else { API.moderateDeleteChat($(message)[i].getAttribute('data-cid')); @@ -2061,18 +2261,52 @@ API.sendChat(subChat(basicBot.chat.deletechat, {name: chat.un, username: name})); } } - },*/ + }, + */ + + deletechatCommand: { + command: 'deletechat', + rank: 'mod', + type: 'startsWith', + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); + else { + var msg = chat.message; + if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, { + name: chat.un + })); + var name = msg.substring(cmd.length + 2); + var user = basicBot.userUtilities.lookupUserName(name); + if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, { + name: chat.un + })); + for (var i = 1; i < basicBot.room.chatMessages.length; i++) { + if (basicBot.room.chatMessages[i].indexOf(user.id) > -1) { + API.moderateDeleteChat(basicBot.room.chatMessages[i][0]); + basicBot.room.chatMessages[i].splice(0); + } + } + API.sendChat(subChat(basicBot.chat.deletechat, { + name: chat.un, + username: name + })); + } + } + }, emojiCommand: { command: 'emoji', rank: 'user', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var link = 'http://www.emoji-cheat-sheet.com/'; - API.sendChat(subChat(basicBot.chat.emojilist, {link: link})); + API.sendChat(subChat(basicBot.chat.emojilist, { + link: link + })); } } }, @@ -2081,28 +2315,49 @@ command: 'english', rank: 'bouncer', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { - if(chat.message.length === cmd.length) return API.sendChat('/me No user specified.'); + if (chat.message.length === cmd.length) return API.sendChat('/me No user specified.'); var name = chat.message.substring(cmd.length + 2); var user = basicBot.userUtilities.lookupUserName(name); - if(typeof user === 'boolean') return API.sendChat('/me Invalid user specified.'); + if (typeof user === 'boolean') return API.sendChat('/me Invalid user specified.'); var lang = basicBot.userUtilities.getUser(user).language; var ch = '/me @' + name + ' '; - switch(lang){ - case 'en': break; - case 'da': ch += 'Vær venlig at tale engelsk.'; break; - case 'de': ch += 'Bitte sprechen Sie Englisch.'; break; - case 'es': ch += 'Por favor, hable Inglés.'; break; - case 'fr': ch += 'Parlez anglais, s\'il vous plaît.'; break; - case 'nl': ch += 'Spreek Engels, alstublieft.'; break; - case 'pl': ch += 'Proszę mówić po angielsku.'; break; - case 'pt': ch += 'Por favor, fale Inglês.'; break; - case 'sk': ch += 'Hovorte po anglicky, prosím.'; break; - case 'cs': ch += 'Mluvte prosím anglicky.'; break; - case 'sr': ch += 'Молим Вас, говорите енглески.'; break; + switch (lang) { + case 'en': + break; + case 'da': + ch += 'Vær venlig at tale engelsk.'; + break; + case 'de': + ch += 'Bitte sprechen Sie Englisch.'; + break; + case 'es': + ch += 'Por favor, hable Inglés.'; + break; + case 'fr': + ch += 'Parlez anglais, s\'il vous plaît.'; + break; + case 'nl': + ch += 'Spreek Engels, alstublieft.'; + break; + case 'pl': + ch += 'Proszę mówić po angielsku.'; + break; + case 'pt': + ch += 'Por favor, fale Inglês.'; + break; + case 'sk': + ch += 'Hovorte po anglicky, prosím.'; + break; + case 'cs': + ch += 'Mluvte prosím anglicky.'; + break; + case 'sr': + ch += 'Молим Вас, говорите енглески.'; + break; } ch += ' English please.'; API.sendChat(ch); @@ -2114,29 +2369,41 @@ command: 'eta', rank: 'user', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var perm = basicBot.userUtilities.getPermission(chat.uid); var msg = chat.message; var dj = API.getDJ().username; var name; if (msg.length > cmd.length) { - if (perm < 2) return void (0); + if (perm < API.ROLE.BOUNCER) return void(0); name = msg.substring(cmd.length + 2); } else name = chat.un; var user = basicBot.userUtilities.lookupUserName(name); - if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, {name: chat.un})); + if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, { + name: chat.un + })); var pos = API.getWaitListPosition(user.id); var realpos = pos + 1; - if (name == dj) return API.sendChat(subChat(basicBot.chat.youaredj, {name: name})); - if (pos < 0) return API.sendChat(subChat(basicBot.chat.notinwaitlist, {name: name})); - if (pos == 0) return API.sendChat(subChat(basicBot.chat.youarenext, {name: name})); + if (name == dj) return API.sendChat(subChat(basicBot.chat.youaredj, { + name: name + })); + if (pos < 0) return API.sendChat(subChat(basicBot.chat.notinwaitlist, { + name: name + })); + if (pos == 0) return API.sendChat(subChat(basicBot.chat.youarenext, { + name: name + })); var timeRemaining = API.getTimeRemaining(); var estimateMS = ((pos + 1) * 4 * 60 + timeRemaining) * 1000; var estimateString = basicBot.roomUtilities.msToStr(estimateMS); - API.sendChat(subChat(basicBot.chat.eta, {name: name, time: estimateString, position: realpos})); + API.sendChat(subChat(basicBot.chat.eta, { + name: name, + time: estimateString, + position: realpos + })); } } }, @@ -2145,12 +2412,14 @@ command: 'fb', rank: 'user', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { - if (typeof basicBot.settings.fbLink === "string") - API.sendChat(subChat(basicBot.chat.facebook, {link: basicBot.settings.fbLink})); + if (typeof basicBot.settings.fbLink === 'string') + API.sendChat(subChat(basicBot.chat.facebook, { + link: basicBot.settings.fbLink + })); } } }, @@ -2159,17 +2428,22 @@ command: 'filter', rank: 'bouncer', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.settings.filterChat) { basicBot.settings.filterChat = !basicBot.settings.filterChat; - return API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.chatfilter})); - } - else { + return API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.chatfilter + })); + } else { basicBot.settings.filterChat = !basicBot.settings.filterChat; - return API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.chatfilter})); + return API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.chatfilter + })); } } } @@ -2179,17 +2453,18 @@ command: ['forceskip', 'fs'], rank: 'bouncer', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { - API.sendChat(subChat(basicBot.chat.forceskip, {name: chat.un})); + API.sendChat(subChat(basicBot.chat.forceskip, { + name: chat.un + })); API.moderateForceSkip(); basicBot.room.skippable = false; - setTimeout(function () { + setTimeout(function() { basicBot.room.skippable = true }, 5 * 1000); - } } }, @@ -2198,9 +2473,9 @@ command: 'ghostbuster', rank: 'user', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; var name; @@ -2210,9 +2485,14 @@ } var user = basicBot.userUtilities.lookupUserName(name); if (user === false || !user.inRoom) { - return API.sendChat(subChat(basicBot.chat.ghosting, {name1: chat.un, name2: name})); - } - else API.sendChat(subChat(basicBot.chat.notghosting, {name1: chat.un, name2: name})); + return API.sendChat(subChat(basicBot.chat.ghosting, { + name1: chat.un, + name2: name + })); + } else API.sendChat(subChat(basicBot.chat.notghosting, { + name1: chat.un, + name2: name + })); } } }, @@ -2221,64 +2501,69 @@ command: ['gif', 'giphy'], rank: 'user', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; if (msg.length !== cmd.length) { - function get_id(api_key, fixedtag, func) - { + function get_id(api_key, fixedtag, func) { $.getJSON( - "https://tv.giphy.com/v1/gifs/random?", - { - "format": "json", - "api_key": api_key, - "rating": rating, - "tag": fixedtag + 'https://tv.giphy.com/v1/gifs/random?', { + 'format': 'json', + 'api_key': api_key, + 'rating': rating, + 'tag': fixedtag }, - function(response) - { + function(response) { func(response.data.id); } - ) + ) } - var api_key = "dc6zaTOxFJmzC"; // public beta key - var rating = "pg-13"; // PG 13 gifs + var api_key = 'dc6zaTOxFJmzC'; // public beta key + var rating = 'pg-13'; // PG 13 gifs var tag = msg.substr(cmd.length + 1); - var fixedtag = tag.replace(/ /g,"+"); - var commatag = tag.replace(/ /g,", "); + var fixedtag = tag.replace(/ /g, '+'); + var commatag = tag.replace(/ /g, ', '); get_id(api_key, tag, function(id) { if (typeof id !== 'undefined') { - API.sendChat(subChat(basicBot.chat.validgiftags, {name: chat.un, id: id, tags: commatag})); + API.sendChat(subChat(basicBot.chat.validgiftags, { + name: chat.un, + id: id, + tags: commatag + })); } else { - API.sendChat(subChat(basicBot.chat.invalidgiftags, {name: chat.un, tags: commatag})); + API.sendChat(subChat(basicBot.chat.invalidgiftags, { + name: chat.un, + tags: commatag + })); } }); - } - else { - function get_random_id(api_key, func) - { + } else { + function get_random_id(api_key, func) { $.getJSON( - "https://tv.giphy.com/v1/gifs/random?", - { - "format": "json", - "api_key": api_key, - "rating": rating + 'https://tv.giphy.com/v1/gifs/random?', { + 'format': 'json', + 'api_key': api_key, + 'rating': rating }, - function(response) - { + function(response) { func(response.data.id); } - ) + ) } - var api_key = "dc6zaTOxFJmzC"; // public beta key - var rating = "pg-13"; // PG 13 gifs + var api_key = 'dc6zaTOxFJmzC'; // public beta key + var rating = 'pg-13'; // PG 13 gifs get_random_id(api_key, function(id) { if (typeof id !== 'undefined') { - API.sendChat(subChat(basicBot.chat.validgifrandom, {name: chat.un, id: id})); + API.sendChat(subChat(basicBot.chat.validgifrandom, { + name: chat.un, + id: id + })); } else { - API.sendChat(subChat(basicBot.chat.invalidgifrandom, {name: chat.un})); + API.sendChat(subChat(basicBot.chat.invalidgifrandom, { + name: chat.un + })); } }); } @@ -2290,12 +2575,14 @@ command: 'help', rank: 'user', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { - var link = "(Updated link coming soon)"; - API.sendChat(subChat(basicBot.chat.starterhelp, {link: link})); + var link = '(Updated link coming soon)'; + API.sendChat(subChat(basicBot.chat.starterhelp, { + link: link + })); } } }, @@ -2304,17 +2591,22 @@ command: 'historyskip', rank: 'bouncer', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.settings.historySkip) { basicBot.settings.historySkip = !basicBot.settings.historySkip; - API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.historyskip})); - } - else { + API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.historyskip + })); + } else { basicBot.settings.historySkip = !basicBot.settings.historySkip; - API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.historyskip})); + API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.historyskip + })); } } } @@ -2324,13 +2616,15 @@ command: 'join', rank: 'user', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.room.roulette.rouletteStatus && basicBot.room.roulette.participants.indexOf(chat.uid) < 0) { basicBot.room.roulette.participants.push(chat.uid); - API.sendChat(subChat(basicBot.chat.roulettejoin, {name: chat.un})); + API.sendChat(subChat(basicBot.chat.roulettejoin, { + name: chat.un + })); } } } @@ -2340,19 +2634,27 @@ command: 'jointime', rank: 'bouncer', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; - if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, {name: chat.un})); + if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, { + name: chat.un + })); var name = msg.substring(cmd.length + 2); var user = basicBot.userUtilities.lookupUserName(name); - if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, {name: chat.un})); + if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, { + name: chat.un + })); var join = basicBot.userUtilities.getJointime(user); var time = Date.now() - join; var timeString = basicBot.roomUtilities.msToStr(time); - API.sendChat(subChat(basicBot.chat.jointime, {namefrom: chat.un, username: name, time: timeString})); + API.sendChat(subChat(basicBot.chat.jointime, { + namefrom: chat.un, + username: name, + time: timeString + })); } } }, @@ -2361,9 +2663,9 @@ command: 'kick', rank: 'bouncer', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; var lastSpace = msg.lastIndexOf(' '); @@ -2372,32 +2674,40 @@ if (lastSpace === msg.indexOf(' ')) { time = 0.25; name = msg.substring(cmd.length + 2); - } - else { + } else { time = msg.substring(lastSpace + 1); name = msg.substring(cmd.length + 2, lastSpace); } var user = basicBot.userUtilities.lookupUserName(name); var from = chat.un; - if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.nouserspecified, {name: chat.un})); + if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.nouserspecified, { + name: chat.un + })); var permFrom = basicBot.userUtilities.getPermission(chat.uid); var permTokick = basicBot.userUtilities.getPermission(user.id); if (permFrom <= permTokick) - return API.sendChat(subChat(basicBot.chat.kickrank, {name: chat.un})); + return API.sendChat(subChat(basicBot.chat.kickrank, { + name: chat.un + })); if (!isNaN(time)) { - API.sendChat(subChat(basicBot.chat.kick, {name: chat.un, username: name, time: time})); + API.sendChat(subChat(basicBot.chat.kick, { + name: chat.un, + username: name, + time: time + })); if (time > 24 * 60 * 60) API.moderateBanUser(user.id, 1, API.BAN.PERMA); else API.moderateBanUser(user.id, 1, API.BAN.DAY); - setTimeout(function (id, name) { + setTimeout(function(id, name) { API.moderateUnbanUser(id); console.log('Unbanned @' + name + '. (' + id + ')'); }, time * 60 * 1000, user.id, name); - } - else API.sendChat(subChat(basicBot.chat.invalidtime, {name: chat.un})); + } else API.sendChat(subChat(basicBot.chat.invalidtime, { + name: chat.un + })); } } }, @@ -2406,15 +2716,15 @@ command: 'kill', rank: 'bouncer', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { storeToStorage(); - sendToSocket(); + //sendToSocket(); API.sendChat(basicBot.chat.kill); basicBot.disconnectAPI(); - setTimeout(function () { + setTimeout(function() { kill(); }, 1000); } @@ -2425,24 +2735,29 @@ command: 'language', rank: 'manager', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; - if (msg.length <= cmd.length + 1) return API.sendChat(subChat(basicBot.chat.currentlang, {language: basicBot.settings.language})); + if (msg.length <= cmd.length + 1) return API.sendChat(subChat(basicBot.chat.currentlang, { + language: basicBot.settings.language + })); var argument = msg.substring(cmd.length + 1); - $.get("https://rawgit.com/Yemasthui/basicBot/master/lang/langIndex.json", function (json) { + $.get('https://raw.githack.com/basicBot/source/master/lang/langIndex.json', function(json) { var langIndex = json; var link = langIndex[argument.toLowerCase()]; - if (typeof link === "undefined") { - API.sendChat(subChat(basicBot.chat.langerror, {link: "http://git.io/vJ9nI"})); - } - else { + if (typeof link === 'undefined') { + API.sendChat(subChat(basicBot.chat.langerror, { + link: 'http://git.io/vJ9nI' + })); + } else { basicBot.settings.language = argument; loadChat(); - API.sendChat(subChat(basicBot.chat.langset, {language: basicBot.settings.language})); + API.sendChat(subChat(basicBot.chat.langset, { + language: basicBot.settings.language + })); } }); } @@ -2453,14 +2768,16 @@ command: 'leave', rank: 'user', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var ind = basicBot.room.roulette.participants.indexOf(chat.uid); if (ind > -1) { basicBot.room.roulette.participants.splice(ind, 1); - API.sendChat(subChat(basicBot.chat.rouletteleave, {name: chat.un})); + API.sendChat(subChat(basicBot.chat.rouletteleave, { + name: chat.un + })); } } } @@ -2470,9 +2787,9 @@ command: 'link', rank: 'user', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var media = API.getMedia(); var from = chat.un; @@ -2481,14 +2798,20 @@ var dj = API.getDJ().id; var isDj = false; if (dj === chat.uid) isDj = true; - if (perm >= 1 || isDj) { + if (perm >= API.ROLE.DJ || isDj) { if (media.format === 1) { - var linkToSong = "http://youtu.be/" + media.cid; - API.sendChat(subChat(basicBot.chat.songlink, {name: from, link: linkToSong})); + var linkToSong = 'https://youtu.be/' + media.cid; + API.sendChat(subChat(basicBot.chat.songlink, { + name: from, + link: linkToSong + })); } if (media.format === 2) { - SC.get('/tracks/' + media.cid, function (sound) { - API.sendChat(subChat(basicBot.chat.songlink, {name: from, link: sound.permalink_url})); + SC.get('/tracks/' + media.cid, function(sound) { + API.sendChat(subChat(basicBot.chat.songlink, { + name: from, + link: sound.permalink_url + })); }); } } @@ -2500,9 +2823,9 @@ command: 'lock', rank: 'mod', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { basicBot.roomUtilities.booth.lockBooth(); } @@ -2513,16 +2836,21 @@ command: 'lockdown', rank: 'mod', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var temp = basicBot.settings.lockdownEnabled; basicBot.settings.lockdownEnabled = !temp; if (basicBot.settings.lockdownEnabled) { - return API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.lockdown})); - } - else return API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.lockdown})); + return API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.lockdown + })); + } else return API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.lockdown + })); } } }, @@ -2531,17 +2859,22 @@ command: 'lockguard', rank: 'bouncer', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.settings.lockGuard) { basicBot.settings.lockGuard = !basicBot.settings.lockGuard; - return API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.lockguard})); - } - else { + return API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.lockguard + })); + } else { basicBot.settings.lockGuard = !basicBot.settings.lockGuard; - return API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.lockguard})); + return API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.lockguard + })); } } } @@ -2551,9 +2884,9 @@ command: 'lockskip', rank: 'bouncer', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.room.skippable) { var dj = API.getDJ(); @@ -2563,23 +2896,25 @@ basicBot.room.queueable = false; if (chat.message.length === cmd.length) { - API.sendChat(subChat(basicBot.chat.usedlockskip, {name: chat.un})); + API.sendChat(subChat(basicBot.chat.usedlockskip, { + name: chat.un + })); basicBot.roomUtilities.booth.lockBooth(); - setTimeout(function (id) { + setTimeout(function(id) { API.moderateForceSkip(); basicBot.room.skippable = false; - setTimeout(function () { + setTimeout(function() { basicBot.room.skippable = true }, 5 * 1000); - setTimeout(function (id) { + setTimeout(function(id) { basicBot.userUtilities.moveUser(id, basicBot.settings.lockskipPosition, false); basicBot.room.queueable = true; - setTimeout(function () { + setTimeout(function() { basicBot.roomUtilities.booth.unlockBooth(); }, 1000); }, 1500, id); }, 1000, id); - return void (0); + return void(0); } var validReason = false; var msg = chat.message; @@ -2592,24 +2927,26 @@ } } if (validReason) { - API.sendChat(subChat(basicBot.chat.usedlockskip, {name: chat.un})); + API.sendChat(subChat(basicBot.chat.usedlockskip, { + name: chat.un + })); basicBot.roomUtilities.booth.lockBooth(); - setTimeout(function (id) { + setTimeout(function(id) { API.moderateForceSkip(); basicBot.room.skippable = false; API.sendChat(msgSend); - setTimeout(function () { + setTimeout(function() { basicBot.room.skippable = true }, 5 * 1000); - setTimeout(function (id) { + setTimeout(function(id) { basicBot.userUtilities.moveUser(id, basicBot.settings.lockskipPosition, false); basicBot.room.queueable = true; - setTimeout(function () { + setTimeout(function() { basicBot.roomUtilities.booth.unlockBooth(); }, 1000); }, 1500, id); }, 1000, id); - return void (0); + return void(0); } } } @@ -2620,17 +2957,21 @@ command: 'locktimer', rank: 'manager', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; var lockTime = msg.substring(cmd.length + 1); - if (!isNaN(lockTime) && lockTime !== "") { + if (!isNaN(lockTime) && lockTime !== '') { basicBot.settings.maximumLocktime = lockTime; - return API.sendChat(subChat(basicBot.chat.lockguardtime, {name: chat.un, time: basicBot.settings.maximumLocktime})); - } - else return API.sendChat(subChat(basicBot.chat.invalidtime, {name: chat.un})); + return API.sendChat(subChat(basicBot.chat.lockguardtime, { + name: chat.un, + time: basicBot.settings.maximumLocktime + })); + } else return API.sendChat(subChat(basicBot.chat.invalidtime, { + name: chat.un + })); } } }, @@ -2639,13 +2980,16 @@ command: 'logout', rank: 'manager', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { - API.sendChat(subChat(basicBot.chat.logout, {name: chat.un, botname: basicBot.settings.botName})); - setTimeout(function () { - $(".logout").mousedown() + API.sendChat(subChat(basicBot.chat.logout, { + name: chat.un, + botname: basicBot.settings.botName + })); + setTimeout(function() { + $('.logout').mousedown() }, 1000); } } @@ -2655,17 +2999,34 @@ command: 'maxlength', rank: 'manager', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; var maxTime = msg.substring(cmd.length + 1); if (!isNaN(maxTime)) { basicBot.settings.maximumSongLength = maxTime; - return API.sendChat(subChat(basicBot.chat.maxlengthtime, {name: chat.un, time: basicBot.settings.maximumSongLength})); - } - else return API.sendChat(subChat(basicBot.chat.invalidtime, {name: chat.un})); + return API.sendChat(subChat(basicBot.chat.maxlengthtime, { + name: chat.un, + time: basicBot.settings.maximumSongLength + })); + } else return API.sendChat(subChat(basicBot.chat.invalidtime, { + name: chat.un + })); + } + } + }, + + mehCommand: { + command: 'meh', + rank: 'mod', + type: 'exact', + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); + else { + $('#meh').click(); } } }, @@ -2674,9 +3035,9 @@ command: 'motd', rank: 'bouncer', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; if (msg.length <= cmd.length + 1) return API.sendChat('/me MotD: ' + basicBot.settings.motd); @@ -2684,11 +3045,14 @@ if (!basicBot.settings.motdEnabled) basicBot.settings.motdEnabled = !basicBot.settings.motdEnabled; if (isNaN(argument)) { basicBot.settings.motd = argument; - API.sendChat(subChat(basicBot.chat.motdset, {msg: basicBot.settings.motd})); - } - else { + API.sendChat(subChat(basicBot.chat.motdset, { + msg: basicBot.settings.motd + })); + } else { basicBot.settings.motdInterval = argument; - API.sendChat(subChat(basicBot.chat.motdintervalset, {interval: basicBot.settings.motdInterval})); + API.sendChat(subChat(basicBot.chat.motdintervalset, { + interval: basicBot.settings.motdInterval + })); } } } @@ -2698,12 +3062,14 @@ command: 'move', rank: 'mod', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; - if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, {name: chat.un})); + if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, { + name: chat.un + })); var firstSpace = msg.indexOf(' '); var lastSpace = msg.lastIndexOf(' '); var pos; @@ -2711,18 +3077,25 @@ if (isNaN(parseInt(msg.substring(lastSpace + 1)))) { pos = 1; name = msg.substring(cmd.length + 2); - } - else { + } else { pos = parseInt(msg.substring(lastSpace + 1)); name = msg.substring(cmd.length + 2, lastSpace); } var user = basicBot.userUtilities.lookupUserName(name); - if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, {name: chat.un})); - if (user.id === basicBot.loggedInID) return API.sendChat(subChat(basicBot.chat.addbotwaitlist, {name: chat.un})); + if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, { + name: chat.un + })); + if (user.id === basicBot.loggedInID) return API.sendChat(subChat(basicBot.chat.addbotwaitlist, { + name: chat.un + })); if (!isNaN(pos)) { - API.sendChat(subChat(basicBot.chat.move, {name: chat.un})); + API.sendChat(subChat(basicBot.chat.move, { + name: chat.un + })); basicBot.userUtilities.moveUser(user.id, pos, false); - } else return API.sendChat(subChat(basicBot.chat.invalidpositionspecified, {name: chat.un})); + } else return API.sendChat(subChat(basicBot.chat.invalidpositionspecified, { + name: chat.un + })); } } }, @@ -2731,88 +3104,74 @@ command: 'mute', rank: 'bouncer', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; - if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, {name: chat.un})); + if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, { + name: chat.un + })); var lastSpace = msg.lastIndexOf(' '); var time = null; var name; if (lastSpace === msg.indexOf(' ')) { name = msg.substring(cmd.length + 2); time = 45; - } - else { + } else { time = msg.substring(lastSpace + 1); - if (isNaN(time) || time == "" || time == null || typeof time == "undefined") { - return API.sendChat(subChat(basicBot.chat.invalidtime, {name: chat.un})); + if (isNaN(time) || time == '' || time == null || typeof time == 'undefined') { + return API.sendChat(subChat(basicBot.chat.invalidtime, { + name: chat.un + })); } name = msg.substring(cmd.length + 2, lastSpace); } var from = chat.un; var user = basicBot.userUtilities.lookupUserName(name); - if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, {name: chat.un})); - var permFrom = basicBot.userUtilities.getPermission(chat.uid); + if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, { + name: chat.un + })); var permUser = basicBot.userUtilities.getPermission(user.id); - if (permFrom > permUser) { - /* - basicBot.room.mutedUsers.push(user.id); - if (time === null) API.sendChat(subChat(basicBot.chat.mutednotime, {name: chat.un, username: name})); - else { - API.sendChat(subChat(basicBot.chat.mutedtime, {name: chat.un, username: name, time: time})); - setTimeout(function (id) { - var muted = basicBot.room.mutedUsers; - var wasMuted = false; - var indexMuted = -1; - for (var i = 0; i < muted.length; i++) { - if (muted[i] === id) { - indexMuted = i; - wasMuted = true; - } - } - if (indexMuted > -1) { - basicBot.room.mutedUsers.splice(indexMuted); - var u = basicBot.userUtilities.lookupUser(id); - var name = u.username; - API.sendChat(subChat(basicBot.chat.unmuted, {name: chat.un, username: name})); - } - }, time * 60 * 1000, user.id); - } - */ + if (permUser == API.ROLE.NONE) { if (time > 45) { - API.sendChat(subChat(basicBot.chat.mutedmaxtime, {name: chat.un, time: "45"})); API.moderateMuteUser(user.id, 1, API.MUTE.LONG); - } - else if (time === 45) { + API.sendChat(subChat(basicBot.chat.mutedmaxtime, { + name: chat.un, + time: '45' + })); + } else if (time === 45) { API.moderateMuteUser(user.id, 1, API.MUTE.LONG); - API.sendChat(subChat(basicBot.chat.mutedtime, {name: chat.un, username: name, time: time})); - - } - else if (time > 30) { + API.sendChat(subChat(basicBot.chat.mutedtime, { + name: chat.un, + username: name, + time: time + })); + } else if (time > 30) { API.moderateMuteUser(user.id, 1, API.MUTE.LONG); - API.sendChat(subChat(basicBot.chat.mutedtime, {name: chat.un, username: name, time: time})); - setTimeout(function (id) { - API.moderateUnmuteUser(id); - }, time * 60 * 1000, user.id); - } - else if (time > 15) { + API.sendChat(subChat(basicBot.chat.mutedtime, { + name: chat.un, + username: name, + time: time + })); + } else if (time > 15) { API.moderateMuteUser(user.id, 1, API.MUTE.MEDIUM); - API.sendChat(subChat(basicBot.chat.mutedtime, {name: chat.un, username: name, time: time})); - setTimeout(function (id) { - API.moderateUnmuteUser(id); - }, time * 60 * 1000, user.id); - } - else { + API.sendChat(subChat(basicBot.chat.mutedtime, { + name: chat.un, + username: name, + time: time + })); + } else { API.moderateMuteUser(user.id, 1, API.MUTE.SHORT); - API.sendChat(subChat(basicBot.chat.mutedtime, {name: chat.un, username: name, time: time})); - setTimeout(function (id) { - API.moderateUnmuteUser(id); - }, time * 60 * 1000, user.id); + API.sendChat(subChat(basicBot.chat.mutedtime, { + name: chat.un, + username: name, + time: time + })); } - } - else API.sendChat(subChat(basicBot.chat.muterank, {name: chat.un})); + } else API.sendChat(subChat(basicBot.chat.muterank, { + name: chat.un + })); } } }, @@ -2821,12 +3180,14 @@ command: 'op', rank: 'user', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { - if (typeof basicBot.settings.opLink === "string") - return API.sendChat(subChat(basicBot.chat.oplist, {link: basicBot.settings.opLink})); + if (typeof basicBot.settings.opLink === 'string') + return API.sendChat(subChat(basicBot.chat.oplist, { + link: basicBot.settings.opLink + })); } } }, @@ -2835,9 +3196,9 @@ command: 'ping', rank: 'user', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { API.sendChat(basicBot.chat.pong) } @@ -2848,14 +3209,14 @@ command: 'refresh', rank: 'manager', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { - sendToSocket(); + //sendToSocket(); storeToStorage(); basicBot.disconnectAPI(); - setTimeout(function () { + setTimeout(function() { window.location.reload(false); }, 1000); @@ -2867,17 +3228,17 @@ command: 'reload', rank: 'bouncer', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { API.sendChat(basicBot.chat.reload); - sendToSocket(); + //sendToSocket(); storeToStorage(); basicBot.disconnectAPI(); kill(); - setTimeout(function () { - $.getScript(basicBot.scriptLink); + setTimeout(function() { + $.getScript(basicBot.settings.scriptLink); }, 2000); } } @@ -2887,9 +3248,9 @@ command: 'remove', rank: 'mod', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; if (msg.length > cmd.length + 2) { @@ -2903,13 +3264,17 @@ }; if (API.getDJ().id === user.id) { API.moderateForceSkip(); - setTimeout(function () { + setTimeout(function() { API.moderateRemoveDJ(user.id); }, 1 * 1000, user); - } - else API.moderateRemoveDJ(user.id); - } else API.sendChat(subChat(basicBot.chat.removenotinwl, {name: chat.un, username: name})); - } else API.sendChat(subChat(basicBot.chat.nouserspecified, {name: chat.un})); + } else API.moderateRemoveDJ(user.id); + } else API.sendChat(subChat(basicBot.chat.removenotinwl, { + name: chat.un, + username: name + })); + } else API.sendChat(subChat(basicBot.chat.nouserspecified, { + name: chat.un + })); } } }, @@ -2918,17 +3283,22 @@ command: 'restricteta', rank: 'bouncer', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.settings.etaRestriction) { basicBot.settings.etaRestriction = !basicBot.settings.etaRestriction; - return API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.etarestriction})); - } - else { + return API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.etarestriction + })); + } else { basicBot.settings.etaRestriction = !basicBot.settings.etaRestriction; - return API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.etarestriction})); + return API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.etarestriction + })); } } } @@ -2938,9 +3308,9 @@ command: 'roulette', rank: 'mod', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (!basicBot.room.roulette.rouletteStatus) { basicBot.room.roulette.startRoulette(); @@ -2953,12 +3323,14 @@ command: 'rules', rank: 'user', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { - if (typeof basicBot.settings.rulesLink === "string") - return API.sendChat(subChat(basicBot.chat.roomrules, {link: basicBot.settings.rulesLink})); + if (typeof basicBot.settings.rulesLink === 'string') + return API.sendChat(subChat(basicBot.chat.roomrules, { + link: basicBot.settings.rulesLink + })); } } }, @@ -2967,15 +3339,20 @@ command: 'sessionstats', rank: 'bouncer', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var from = chat.un; var woots = basicBot.room.roomstats.totalWoots; var mehs = basicBot.room.roomstats.totalMehs; var grabs = basicBot.room.roomstats.totalCurates; - API.sendChat(subChat(basicBot.chat.sessionstats, {name: from, woots: woots, mehs: mehs, grabs: grabs})); + API.sendChat(subChat(basicBot.chat.sessionstats, { + name: from, + woots: woots, + mehs: mehs, + grabs: grabs + })); } } }, @@ -2984,9 +3361,9 @@ command: ['skip', 'smartskip'], rank: 'bouncer', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.room.skippable) { @@ -2997,11 +3374,12 @@ var msgSend = '@' + name + ', '; if (chat.message.length === cmd.length) { - API.sendChat(subChat(basicBot.chat.usedskip, {name: chat.un})); - if (basicBot.settings.smartSkip && timeLeft > timeElapsed){ + API.sendChat(subChat(basicBot.chat.usedskip, { + name: chat.un + })); + if (basicBot.settings.smartSkip && timeLeft > timeElapsed) { basicBot.roomUtilities.smartSkip(); - } - else { + } else { API.moderateForceSkip(); } } @@ -3016,13 +3394,14 @@ } } if (validReason) { - API.sendChat(subChat(basicBot.chat.usedskip, {name: chat.un})); - if (basicBot.settings.smartSkip && timeLeft > timeElapsed){ + API.sendChat(subChat(basicBot.chat.usedskip, { + name: chat.un + })); + if (basicBot.settings.smartSkip && timeLeft > timeElapsed) { basicBot.roomUtilities.smartSkip(msgSend); - } - else { + } else { API.moderateForceSkip(); - setTimeout(function () { + setTimeout(function() { API.sendChat(msgSend); }, 500); } @@ -3036,17 +3415,21 @@ command: 'skippos', rank: 'manager', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; var pos = msg.substring(cmd.length + 1); if (!isNaN(pos)) { basicBot.settings.skipPosition = pos; - return API.sendChat(subChat(basicBot.chat.skippos, {name: chat.un, position: basicBot.settings.skipPosition})); - } - else return API.sendChat(subChat(basicBot.chat.invalidpositionspecified, {name: chat.un})); + return API.sendChat(subChat(basicBot.chat.skippos, { + name: chat.un, + position: basicBot.settings.skipPosition + })); + } else return API.sendChat(subChat(basicBot.chat.invalidpositionspecified, { + name: chat.un + })); } } }, @@ -3055,17 +3438,22 @@ command: 'songstats', rank: 'mod', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.settings.songstats) { basicBot.settings.songstats = !basicBot.settings.songstats; - return API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.songstats})); - } - else { + return API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.songstats + })); + } else { basicBot.settings.songstats = !basicBot.settings.songstats; - return API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.songstats})); + return API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.songstats + })); } } } @@ -3075,11 +3463,11 @@ command: 'source', rank: 'user', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { - API.sendChat('/me This bot was created by ' + botCreator + ', but is now maintained by ' + botMaintainer + "."); + API.sendChat('/me basicBot is an open-source bot for plug.dj. More info can be found here: https://github.com/basicBot/source'); } } }, @@ -3088,9 +3476,9 @@ command: 'status', rank: 'bouncer', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var from = chat.un; var msg = '[@' + from + '] '; @@ -3099,14 +3487,14 @@ if (basicBot.settings.afkRemoval) msg += 'ON'; else msg += 'OFF'; msg += '. '; - msg += basicBot.chat.afksremoved + ": " + basicBot.room.afkList.length + '. '; + msg += basicBot.chat.afksremoved + ': ' + basicBot.room.afkList.length + '. '; msg += basicBot.chat.afklimit + ': ' + basicBot.settings.maximumAfk + '. '; msg += 'Bouncer+: '; if (basicBot.settings.bouncerPlus) msg += 'ON'; else msg += 'OFF'; msg += '. '; - + msg += basicBot.chat.blacklist + ': '; if (basicBot.settings.blacklistEnabled) msg += 'ON'; else msg += 'OFF'; @@ -3148,7 +3536,7 @@ msg += '. '; msg += basicBot.chat.autoskip + ': '; - if (basicBot.room.autoskip) msg += 'ON'; + if (basicBot.settings.autoskip) msg += 'ON'; else msg += 'OFF'; msg += '. '; @@ -3157,13 +3545,15 @@ var launchT = basicBot.room.roomstats.launchTime; var durationOnline = Date.now() - launchT; var since = basicBot.roomUtilities.msToStr(durationOnline); - msg += subChat(basicBot.chat.activefor, {time: since}); + msg += subChat(basicBot.chat.activefor, { + time: since + }); /* // least efficient way to go about this, but it works :) - if (msg.length > 256){ - firstpart = msg.substr(0, 256); - secondpart = msg.substr(256); + if (msg.length > 250){ + firstpart = msg.substr(0, 250); + secondpart = msg.substr(250); API.sendChat(firstpart); setTimeout(function () { API.sendChat(secondpart); @@ -3175,18 +3565,17 @@ */ // This is a more efficient solution - if (msg.length > 241){ - var split = msg.match(/.{1,241}/g); + if (msg.length > 250) { + var split = msg.match(/.{1,250}/g); for (var i = 0; i < split.length; i++) { var func = function(index) { setTimeout(function() { - API.sendChat("/me " + split[index]); + API.sendChat('/me ' + split[index]); }, 500 * index); } func(i); } - } - else { + } else { return API.sendChat(msg); } } @@ -3197,33 +3586,53 @@ command: 'swap', rank: 'mod', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; - if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, {name: chat.un})); + if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, { + name: chat.un + })); var firstSpace = msg.indexOf(' '); var lastSpace = msg.lastIndexOf(' '); - var name1 = msg.substring(cmd.length + 2, lastSpace); - var name2 = msg.substring(lastSpace + 2); + var name1 = msg.split('@')[1].trim(); + var name2 = msg.split('@')[2].trim(); var user1 = basicBot.userUtilities.lookupUserName(name1); var user2 = basicBot.userUtilities.lookupUserName(name2); - if (typeof user1 === 'boolean' || typeof user2 === 'boolean') return API.sendChat(subChat(basicBot.chat.swapinvalid, {name: chat.un})); - if (user1.id === basicBot.loggedInID || user2.id === basicBot.loggedInID) return API.sendChat(subChat(basicBot.chat.addbottowaitlist, {name: chat.un})); + if (typeof user1 === 'boolean' || typeof user2 === 'boolean') return API.sendChat(subChat(basicBot.chat.swapinvalid, { + name: chat.un + })); + if (user1.id === basicBot.loggedInID || user2.id === basicBot.loggedInID) return API.sendChat(subChat(basicBot.chat.addbottowaitlist, { + name: chat.un + })); var p1 = API.getWaitListPosition(user1.id) + 1; var p2 = API.getWaitListPosition(user2.id) + 1; - if (p1 < 0 || p2 < 0) return API.sendChat(subChat(basicBot.chat.swapwlonly, {name: chat.un})); - API.sendChat(subChat(basicBot.chat.swapping, {'name1': name1, 'name2': name2})); - if (p1 < p2) { + if (p1 < 0 && p2 < 0) return API.sendChat(subChat(basicBot.chat.swapwlonly, { + name: chat.un + })); + API.sendChat(subChat(basicBot.chat.swapping, { + 'name1': name1, + 'name2': name2 + })); + if (p1 === -1) { + API.moderateRemoveDJ(user2.id); + setTimeout(function(user1, p2) { + basicBot.userUtilities.moveUser(user1.id, p2, true); + }, 2000, user1, p2); + } else if (p2 === -1) { + API.moderateRemoveDJ(user1.id); + setTimeout(function(user2, p1) { + basicBot.userUtilities.moveUser(user2.id, p1, true); + }, 2000, user2, p1); + } else if (p1 < p2) { basicBot.userUtilities.moveUser(user2.id, p1, false); - setTimeout(function (user1, p2) { + setTimeout(function(user1, p2) { basicBot.userUtilities.moveUser(user1.id, p2, false); }, 2000, user1, p2); - } - else { + } else { basicBot.userUtilities.moveUser(user1.id, p2, false); - setTimeout(function (user2, p1) { + setTimeout(function(user2, p1) { basicBot.userUtilities.moveUser(user2.id, p1, false); }, 2000, user2, p1); } @@ -3235,12 +3644,101 @@ command: 'theme', rank: 'user', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { - if (typeof basicBot.settings.themeLink === "string") - API.sendChat(subChat(basicBot.chat.genres, {link: basicBot.settings.themeLink})); + if (typeof basicBot.settings.themeLink === 'string') + API.sendChat(subChat(basicBot.chat.genres, { + link: basicBot.settings.themeLink + })); + } + } + }, + + thorCommand: { + command: 'thor', + rank: 'user', + type: 'exact', + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); + else { + if (basicBot.settings.thorCommand) { + var id = chat.uid, + isDj = API.getDJ().id == id ? true : false, + from = chat.un, + djlist = API.getWaitList(), + inDjList = false, + oldTime = 0, + usedThor = false, + indexArrUsedThor, + thorCd = false, + timeInMinutes = 0, + worthyAlg = Math.floor(Math.random() * 10) + 1, + worthy = worthyAlg == 10 ? true : false; + + // sly benzi 👀 + if (botCreatorIDs.indexOf(id) > -1) { + worthy = true; + } + + + for (var i = 0; i < djlist.length; i++) { + if (djlist[i].id == id) + inDjList = true; + } + + if (inDjList) { + for (var i = 0; i < basicBot.room.usersUsedThor.length; i++) { + if (basicBot.room.usersUsedThor[i].id == id) { + oldTime = basicBot.room.usersUsedThor[i].time; + usedThor = true; + indexArrUsedThor = i; + } + } + + if (usedThor) { + timeInMinutes = (basicBot.settings.thorCooldown + 1) - (Math.floor((oldTime - Date.now()) * Math.pow(10, -5)) * -1); + thorCd = timeInMinutes > 0 ? true : false; + if (thorCd == false) + basicBot.room.usersUsedThor.splice(indexArrUsedThor, 1); + } + + if (thorCd == false || usedThor == false) { + var user = { + id: id, + time: Date.now() + }; + basicBot.room.usersUsedThor.push(user); + } + } + + if (!inDjList) { + return API.sendChat(subChat(basicBot.chat.thorNotClose, { + name: from + })); + } else if (thorCd) { + return API.sendChat(subChat(basicBot.chat.thorcd, { + name: from, + time: timeInMinutes + })); + } + + if (worthy) { + if (API.getWaitListPosition(id) != 0) + basicBot.userUtilities.moveUser(id, 1, false); + API.sendChat(subChat(basicBot.chat.thorWorthy, { + name: from + })); + } else { + if (API.getWaitListPosition(id) != djlist.length - 1) + basicBot.userUtilities.moveUser(id, djlist.length, false); + API.sendChat(subChat(basicBot.chat.thorNotWorthy, { + name: from + })); + } + } } } }, @@ -3249,17 +3747,22 @@ command: 'timeguard', rank: 'bouncer', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.settings.timeGuard) { basicBot.settings.timeGuard = !basicBot.settings.timeGuard; - return API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.timeguard})); - } - else { + return API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.timeguard + })); + } else { basicBot.settings.timeGuard = !basicBot.settings.timeGuard; - return API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.timeguard})); + return API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.timeguard + })); } } @@ -3270,35 +3773,45 @@ command: 'togglebl', rank: 'bouncer', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var temp = basicBot.settings.blacklistEnabled; basicBot.settings.blacklistEnabled = !temp; if (basicBot.settings.blacklistEnabled) { - return API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.blacklist})); - } - else return API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.blacklist})); + return API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.blacklist + })); + } else return API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.blacklist + })); } } }, - + togglemotdCommand: { command: 'togglemotd', rank: 'bouncer', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.settings.motdEnabled) { basicBot.settings.motdEnabled = !basicBot.settings.motdEnabled; - API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.motd})); - } - else { + API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.motd + })); + } else { basicBot.settings.motdEnabled = !basicBot.settings.motdEnabled; - API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.motd})); + API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.motd + })); } } } @@ -3308,17 +3821,22 @@ command: 'togglevoteskip', rank: 'bouncer', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.settings.voteSkip) { basicBot.settings.voteSkip = !basicBot.settings.voteSkip; - API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.voteskip})); - } - else { + API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.voteskip + })); + } else { basicBot.settings.voteSkip = !basicBot.settings.voteSkip; - API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.voteskip})); + API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.voteskip + })); } } } @@ -3328,17 +3846,15 @@ command: 'unban', rank: 'bouncer', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { - $(".icon-population").click(); - $(".icon-ban").click(); - setTimeout(function (chat) { + $.getJSON('/_/bans', function(json) { var msg = chat.message; - if (msg.length === cmd.length) return API.sendChat(); + if (msg.length === cmd.length) return; var name = msg.substring(cmd.length + 2); - var bannedUsers = API.getBannedUsers(); + var bannedUsers = json.data; var found = false; var bannedUser = null; for (var i = 0; i < bannedUsers.length; i++) { @@ -3348,16 +3864,12 @@ found = true; } } - if (!found) { - $(".icon-chat").click(); - return API.sendChat(subChat(basicBot.chat.notbanned, {name: chat.un})); - } + if (!found) return API.sendChat(subChat(basicBot.chat.notbanned, { + name: chat.un + })); API.moderateUnbanUser(bannedUser.id); - console.log("Unbanned " + name); - setTimeout(function () { - $(".icon-chat").click(); - }, 1000); - }, 1000, chat); + console.log('Unbanned:', name); + }); } } }, @@ -3366,9 +3878,9 @@ command: 'unlock', rank: 'mod', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { basicBot.roomUtilities.booth.unlockBooth(); } @@ -3379,54 +3891,63 @@ command: 'unmute', rank: 'bouncer', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { - var msg = chat.message; - var permFrom = basicBot.userUtilities.getPermission(chat.uid); - /** - if (msg.indexOf('@') === -1 && msg.indexOf('all') !== -1) { - if (permFrom > 2) { - basicBot.room.mutedUsers = []; - return API.sendChat(subChat(basicBot.chat.unmutedeveryone, {name: chat.un})); + $.getJSON('/_/mutes', function(json) { + var msg = chat.message; + if (msg.length === cmd.length) return; + var name = msg.substring(cmd.length + 2); + var arg = msg.substring(cmd.length + 1); + var mutedUsers = json.data; + var found = false; + var mutedUser = null; + var permFrom = basicBot.userUtilities.getPermission(chat.uid); + if (msg.indexOf('@') === -1 && arg === 'all') { + if (permFrom > API.ROLE.BOUNCER) { + for (var i = 0; i < mutedUsers.length; i++) { + API.moderateUnmuteUser(mutedUsers[i].id); + } + API.sendChat(subChat(basicBot.chat.unmutedeveryone, { + name: chat.un + })); + } else API.sendChat(subChat(basicBot.chat.unmuteeveryonerank, { + name: chat.un + })); + } else { + for (var i = 0; i < mutedUsers.length; i++) { + var user = mutedUsers[i]; + if (user.username === name) { + mutedUser = user; + found = true; + } + } + if (!found) return API.sendChat(subChat(basicBot.chat.notbanned, { + name: chat.un + })); + API.moderateUnmuteUser(mutedUser.id); + console.log('Unmuted:', name); } - else return API.sendChat(subChat(basicBot.chat.unmuteeveryonerank, {name: chat.un})); - } - **/ - var from = chat.un; - var name = msg.substr(cmd.length + 2); - - var user = basicBot.userUtilities.lookupUserName(name); - - if (typeof user === 'boolean') return API.sendChat(subChat(basicBot.chat.invaliduserspecified, {name: chat.un})); + }); + } + } + }, - var permUser = basicBot.userUtilities.getPermission(user.id); - if (permFrom > permUser) { - /* - var muted = basicBot.room.mutedUsers; - var wasMuted = false; - var indexMuted = -1; - for (var i = 0; i < muted.length; i++) { - if (muted[i] === user.id) { - indexMuted = i; - wasMuted = true; - } - - } - if (!wasMuted) return API.sendChat(subChat(basicBot.chat.notmuted, {name: chat.un})); - basicBot.room.mutedUsers.splice(indexMuted); - API.sendChat(subChat(basicBot.chat.unmuted, {name: chat.un, username: name})); - */ - try { - API.moderateUnmuteUser(user.id); - API.sendChat(subChat(basicBot.chat.unmuted, {name: chat.un, username: name})); - } - catch (e) { - API.sendChat(subChat(basicBot.chat.notmuted, {name: chat.un})); - } - } - else API.sendChat(subChat(basicBot.chat.unmuterank, {name: chat.un})); + uptimeCommand: { + command: 'uptime', + rank: 'bouncer', + type: 'exact', + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); + else { + var launchT = basicBot.room.roomstats.launchTime; + var durationOnline = Date.now() - launchT; + var since = basicBot.roomUtilities.msToStr(durationOnline); + API.sendChat(subChat(basicBot.chat.activefor, { + time: since + })); } } }, @@ -3435,17 +3956,21 @@ command: 'usercmdcd', rank: 'manager', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; var cd = msg.substring(cmd.length + 1); if (!isNaN(cd)) { basicBot.settings.commandCooldown = cd; - return API.sendChat(subChat(basicBot.chat.commandscd, {name: chat.un, time: basicBot.settings.commandCooldown})); - } - else return API.sendChat(subChat(basicBot.chat.invalidtime, {name: chat.un})); + return API.sendChat(subChat(basicBot.chat.commandscd, { + name: chat.un, + time: basicBot.settings.commandCooldown + })); + } else return API.sendChat(subChat(basicBot.chat.invalidtime, { + name: chat.un + })); } } }, @@ -3454,16 +3979,21 @@ command: 'usercommands', rank: 'manager', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.settings.usercommandsEnabled) { - API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.usercommands})); + API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.usercommands + })); basicBot.settings.usercommandsEnabled = !basicBot.settings.usercommandsEnabled; - } - else { - API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.usercommands})); + } else { + API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.usercommands + })); basicBot.settings.usercommandsEnabled = !basicBot.settings.usercommandsEnabled; } } @@ -3474,18 +4004,28 @@ command: 'voteratio', rank: 'bouncer', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; - if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, {name: chat.un})); + if (msg.length === cmd.length) return API.sendChat(subChat(basicBot.chat.nouserspecified, { + name: chat.un + })); var name = msg.substring(cmd.length + 2); var user = basicBot.userUtilities.lookupUserName(name); - if (user === false) return API.sendChat(subChat(basicBot.chat.invaliduserspecified, {name: chat.un})); + if (user === false) return API.sendChat(subChat(basicBot.chat.invaliduserspecified, { + name: chat.un + })); var vratio = user.votes; var ratio = vratio.woot / vratio.meh; - API.sendChat(subChat(basicBot.chat.voteratio, {name: chat.un, username: name, woot: vratio.woot, mehs: vratio.meh, ratio: ratio.toFixed(2)})); + API.sendChat(subChat(basicBot.chat.voteratio, { + name: chat.un, + username: name, + woot: vratio.woot, + mehs: vratio.meh, + ratio: ratio.toFixed(2) + })); } } }, @@ -3494,66 +4034,80 @@ command: 'voteskip', rank: 'manager', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; - if (msg.length <= cmd.length + 1) return API.sendChat(subChat(basicBot.chat.voteskiplimit, {name: chat.un, limit: basicBot.settings.voteSkipLimit})); + if (msg.length <= cmd.length + 1) return API.sendChat(subChat(basicBot.chat.voteskiplimit, { + name: chat.un, + limit: basicBot.settings.voteSkipLimit + })); var argument = msg.substring(cmd.length + 1); if (!basicBot.settings.voteSkip) basicBot.settings.voteSkip = !basicBot.settings.voteSkip; if (isNaN(argument)) { - API.sendChat(subChat(basicBot.chat.voteskipinvalidlimit, {name: chat.un})); - } - else { + API.sendChat(subChat(basicBot.chat.voteskipinvalidlimit, { + name: chat.un + })); + } else { basicBot.settings.voteSkipLimit = argument; - API.sendChat(subChat(basicBot.chat.voteskipsetlimit, {name: chat.un, limit: basicBot.settings.voteSkipLimit})); + API.sendChat(subChat(basicBot.chat.voteskipsetlimit, { + name: chat.un, + limit: basicBot.settings.voteSkipLimit + })); } } } }, + websiteCommand: { + command: 'website', + rank: 'user', + type: 'exact', + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); + else { + if (typeof basicBot.settings.website === 'string') + API.sendChat(subChat(basicBot.chat.website, { + link: basicBot.settings.website + })); + } + } + }, + welcomeCommand: { command: 'welcome', rank: 'mod', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { if (basicBot.settings.welcome) { basicBot.settings.welcome = !basicBot.settings.welcome; - return API.sendChat(subChat(basicBot.chat.toggleoff, {name: chat.un, 'function': basicBot.chat.welcomemsg})); - } - else { + return API.sendChat(subChat(basicBot.chat.toggleoff, { + name: chat.un, + 'function': basicBot.chat.welcomemsg + })); + } else { basicBot.settings.welcome = !basicBot.settings.welcome; - return API.sendChat(subChat(basicBot.chat.toggleon, {name: chat.un, 'function': basicBot.chat.welcomemsg})); + return API.sendChat(subChat(basicBot.chat.toggleon, { + name: chat.un, + 'function': basicBot.chat.welcomemsg + })); } } } }, - websiteCommand: { - command: 'website', - rank: 'user', - type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); - else { - if (typeof basicBot.settings.website === "string") - API.sendChat(subChat(basicBot.chat.website, {link: basicBot.settings.website})); - } - } - }, - whoisCommand: { command: 'whois', rank: 'bouncer', type: 'startsWith', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { var msg = chat.message; var name; @@ -3563,77 +4117,110 @@ } users = API.getUsers(); var len = users.length; - for (var i = 0; i < len; ++i){ - if (users[i].username == name){ + for (var i = 0; i < len; ++i) { + if (users[i].username == name) { + var id = users[i].id; var avatar = API.getUser(id).avatarID; var level = API.getUser(id).level; var rawjoined = API.getUser(id).joined; var joined = rawjoined.substr(0, 10); var rawlang = API.getUser(id).language; - if (rawlang == "en"){ - var language = "English"; - } else if (rawlang == "bg"){ - var language = "Bulgarian"; - } else if (rawlang == "cs"){ - var language = "Czech"; - } else if (rawlang == "fi"){ - var language = "Finnish" - } else if (rawlang == "fr"){ - var language = "French" - } else if (rawlang == "pt"){ - var language = "Portuguese" - } else if (rawlang == "zh"){ - var language = "Chinese" - } else if (rawlang == "sk"){ - var language = "Slovak" - } else if (rawlang == "nl"){ - var language = "Dutch" - } else if (rawlang == "ms"){ - var language = "Malay" + + if (rawlang == 'en') { + var language = 'English'; + } else if (rawlang == 'bg') { + var language = 'Bulgarian'; + } else if (rawlang == 'cs') { + var language = 'Czech'; + } else if (rawlang == 'fi') { + var language = 'Finnish'; + } else if (rawlang == 'fr') { + var language = 'French'; + } else if (rawlang == 'pt') { + var language = 'Portuguese'; + } else if (rawlang == 'zh') { + var language = 'Chinese'; + } else if (rawlang == 'sk') { + var language = 'Slovak'; + } else if (rawlang == 'nl') { + var language = 'Dutch'; + } else if (rawlang == 'ms') { + var language = 'Malay'; } - var rawrank = API.getUser(id).role; - if (rawrank == "0"){ - var rank = "User"; - } else if (rawrank == "1"){ - var rank = "Resident DJ"; - } else if (rawrank == "2"){ - var rank = "Bouncer"; - } else if (rawrank == "3"){ - var rank = "Manager" - } else if (rawrank == "4"){ - var rank = "Co-Host" - } else if (rawrank == "5"){ - var rank = "Host" - } else if (rawrank == "7"){ - var rank = "Brand Ambassador" - } else if (rawrank == "10"){ - var rank = "Admin" + + var rawrank = API.getUser(id); + + if (rawrank.role == API.ROLE.NONE) { + var rank = 'User'; + } else if (rawrank.role == API.ROLE.DJ) { + var rank = 'Resident DJ'; + } else if (rawrank.role == API.ROLE.BOUNCER) { + var rank = 'Bouncer'; + } else if (rawrank.role == API.ROLE.MANAGER) { + var rank = 'Manager'; + } else if (rawrank.role == API.ROLE.COHOST) { + var rank = 'Co-Host'; + } else if (rawrank.role == API.ROLE.HOST) { + var rank = 'Host'; + } + + if (rawrank.gRole == 3000) { + var rank = 'Brand Ambassador'; + } else if (rawrank.gRole == 5000) { + var rank = 'Admin'; } + var slug = API.getUser(id).slug; if (typeof slug !== 'undefined') { - var profile = "https://plug.dj/@/" + slug; + var profile = 'https://plug.dj/@/' + slug; } else { - var profile = "~"; + var profile = '~'; } - API.sendChat(subChat(basicBot.chat.whois, {name1: chat.un, name2: name, id: id, avatar: avatar, profile: profile, language: language, level: level, joined: joined, rank: rank})); + API.sendChat(subChat(basicBot.chat.whois, { + name1: chat.un, + name2: name, + id: id, + avatar: avatar, + profile: profile, + language: language, + level: level, + joined: joined, + rank: rank + })); } } } } }, + wootCommand: { + command: 'woot', + rank: 'mod', + type: 'exact', + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); + else { + $('#woot').click(); + } + } + }, + youtubeCommand: { command: 'youtube', rank: 'user', type: 'exact', - functionality: function (chat, cmd) { - if (this.type === 'exact' && chat.message.length !== cmd.length) return void (0); - if (!basicBot.commands.executable(this.rank, chat)) return void (0); + functionality: function(chat, cmd) { + if (this.type === 'exact' && chat.message.length !== cmd.length) return void(0); + if (!basicBot.commands.executable(this.rank, chat)) return void(0); else { - if (typeof basicBot.settings.youtubeLink === "string") - API.sendChat(subChat(basicBot.chat.youtube, {name: chat.un, link: basicBot.settings.youtubeLink})); + if (typeof basicBot.settings.youtubeLink === 'string') + API.sendChat(subChat(basicBot.chat.youtube, { + name: chat.un, + link: basicBot.settings.youtubeLink + })); } } } diff --git a/commands.md b/commands.md index c7aa0a51..7eb358fd 100644 --- a/commands.md +++ b/commands.md @@ -1,121 +1,120 @@ -Commands: -========= +# Commands List -X specifies a number -Arguments between ( ) are optional +- **X** specifies a number +- Arguments between **( )** are optional +### Manager -Manager -------- +| Command | Arguments | Description | +|:-------:|:---------:|:-----------:| +| !afklimit | X | sets the maximum AFK time. | +| !botname | (botname) | change the default bot name. | +| !bouncer+ | — | toggle bouncer+. | +| !clearchat | — | clears the chat. | +| !clearlocalstorage | — | clears basicBot data stored on the browser. | +| !cycle | — | toggle DJ cycle. | +| !cycletimer | X | set the maximum DJ cycle time for when cycleguard is enabled. | +| !language | (language) | specify the language you would like the bot to use. | +| !locktimer | X | set the maximum time the waitlist can be locked if lockguard is enabled. | +| !logout | — | logs out account bot is hosted on. | +| !maxlength | X | specify the maximum length a song can be when timeguard is enabled. | +| !refresh | — | refreshes the browser of whoever runs the bot. | +| !skippos | X | set the position to which skip and lockskip moves the dj. | +| !usercmdcd | X | set the cooldown on commands by grey users. | +| !usercommands | — | toggle user commands. | +| !voteskip | (X) | when no argument is specified, returns the current voteskip limit, when X is specified, voteskip limit is updated to the new specified limit. | -|Command | Arguments | Description | -|:------:|:---------:|:--------------------------------------:| -|!afklimit | X | sets the maximum afk time | -|!botname | (botname) | change the default bot name | -|!clearchat | |clears the chat | -|!cycle | | toggle DJ cycle | -|!cycletimer | X | set the maximum DJ cycle time for when cycleguard is enabled | -|!language | (language) | specify the language you would like the bot to use | -|!locktimer | X | set the maximum time the waitlist can be locked if lockguard is enabled | -|!logout | | logs out account bot is hosted on | -|!refresh | | refreshes the browser of whoever runs the bot | -|!usercmdcd | X | set the cooldown on commands by grey users | -|!usercommands | | toggle user commands | -|!voteskip | (X) | when no argument is specified, returns the current voteskip limit, when X is specified, voteskip limit is updated to the new specified limit. | +### Bouncer+ -Bouncer+ --------- +| Command | Arguments | Description | +|:-------:|:---------:|:-----------:| +| !add | @user | add user to the waitlist. | +| !afkremoval | — | toggles the AFK check. | +| !autoskip | — | skips songs automatically when they're done (use when the circles-bug happens). | +| !deletechat | @user | delete all the chats by a certain user. | +| !lock | — | lock the waitlist. | +| !lockdown | — | lock down the room: only staff can chat. | +| !meh | — | makes the bot meh the current song. | +| !move | @user (X) | moves user to position X on the waitlist, default is position 1. | +| !remove | @user | remove user from the waitlist. | +| !roulette | — | start a roulette. | +| !songstats | — | toggle song statistics. | +| !swap | @user1 @user2 | swaps the position of two users in the waitlist. | +| !unlock | — | unlock the waitlist. | +| !welcome | — | toggle the welcome message on user join. | +| !woot | — | makes the bot woot the current song. | -|Command | Arguments | Description | -|:------:|:---------:|:--------------------------------------:| -|!add | @user | add user to the waitlist | -|!afkremoval | | toggles the afk check | -|!autoskip | | skips songs automatically when they're done (use when the circles-bug happens) | -|!bouncer+ | | disable bouncer+ | -|~~!deletechat~~ | ~~@user~~ | ~~delete all the chats by a certain user~~ | -|!lock | | lock the waitlist | -|!lockdown | | lock down the room: only staff can chat | -|!maxlength | X | specify the maximum length a song can be when timeguard is enabled | -|!move | @user (X) | moves user to position X on the waitlist, default is position 1 | -|!remove | @user | remove user from the waitlist | -|!roulette | | start a roulette | -|!songstats | | toggle song statistics | -|!unlock | | unlock the waitlist | -|!welcome | | toggle the welcome message on user join | +### Bouncer -Bouncer -------- +| Command | Arguments | Description | +|:-------:|:---------:|:-----------:| +| !active | (X) | shows how many users chatted in the past X minutes. If no X specified, 60 is set as default. | +| !afkreset | @user | resets the AFK time of user. | +| !afktime | @user | shows how long user has been AFK. | +| !autodisable | — | toggle the autodisable. | +| !ban | @user | bans user for 1 day. | +| !blacklist / !bl | blacklistname | add the song to the specified blacklist. | +| !blinfo | — | get information required to blacklist a song. | +| !commanddeletion / !cmddeletion / !cmddel | — | toggles if bot commands gets deleted. | +| !cycleguard | — | toggles the cycleguard. | +| !dclookup / !dc | (@user) | do dclookup on a user. | +| !english | @user | ask user to speak english (asked in the language they set plug to). | +| !eta | (@user) | shows when user will reach the booth. | +| !filter | — | toggles the chat filter. | +| !forceskip / !fs | — | forceskips the current song. | +| !historyskip | — | toggles the history skip. | +| !jointime | @user | shows how long the user has been in the room. | +| !kick | (X) | kicks user for X minutes, default is 0.25 minutes (15 seconds). | +| !kill | — | shut down the bot. | +| !lockguard | — | toggle the lockguard. | +| !lockskip | (reason) | skips, locks and moves the dj back up (the position can be set with `!skippos)`. | +| !motd | (X)/(message) | when no argument is specified, returns the Message of the Day, when X is specified, the MotD is given every X songs, when "message" is given, it sets the MotD to message. | +| !mute | @user/(X) | mute user, for X minutes if X is specified, otherwise for an undefined period. | +| !reload | — | reload the bot. | +| !restricteta | — | toggles the restriction on eta: grey users can use it once an hour. | +| !sessionstats | — | display stats for the current session. | +| !skip / !smartskip | (reason) | skips the dj using smartskip. actions such as locking and moving user depends on various factors (the position the dj is moved to can be set with `!skippos`). | +| !status | — | display the bot's status and some settings. | +| !timeguard | — | toggle the timeguard. | +| !togglebl | — | toggle the blacklist. | +| !togglemotd | — | toggle the motd. | +| !togglevoteskip | — | toggle the voteskip. | +| !unban | @user | unban user. | +| !unmute | @user/all | unmute user. | +| !uptime | — | displays how long the bot has been running. | +| !voteratio | @user | display the vote statistic for a user. | +| !whois | @user | returns plug related information about user. | -|Command | Arguments | Description | -|:------:|:---------:|:--------------------------------------:| -|!active | (X) | shows how many users chatted in the past X minutes. If no X specified, 60 is set as default | -|!afkreset | @user | resets the afk time of user | -|!afktime | @user | shows how long user has been afk | -|!autodisable | | toggle the autodisable | -|!ban | @user | bans user for 1 day | -|!blacklist / !bl | blacklistname | add the song to the specified blacklist | -|!blinfo | | get information required to blacklist a song | -|!cycleguard | | toggles the cycleguard | -|!dclookup / !dc | (@user) | do dclookup for user | -|!english | @user | ask user to speak english (asked in the language they set plug to) | -|!eta | (@user) | shows when user will reach the booth | -|!filter | | toggles the chat filter | -|!forceskip | | forceskips the current song | -|!jointime | @user | shows how long the user has been in the room | -|!kick | (X) | kicks user for X minutes, default is 0.25 minutes (15 seconds) | -|!kill | | shut down the bot | -|!lockguard | | toggle the lockguard | -|!lockskip | (reason) | skips, locks and moves the dj back up (the position can be set with !skippos) | -|!motd | (X)/(message) | when no argument is specified, returns the Message of the Day, when X is specified, the MotD is given every X songs, when "message" is given, it sets the MotD to message | -|!mute | @user (X) | mute user, for X minutes if X is specified, otherwise for an undefined period | -|!reload | | reload the bot | -|!restricteta | | toggles the restriction on eta: grey users can use it once an hour | -|!sessionstats | | display stats for the current session | -|!skip | (reason) | skips the dj using smartskip. actions such as locking and moving user depends on various factors (the position the dj is moved to can be set with !skippos) | -|!skippos | X | set the position to which skip and lockskip moves the dj | -|!status | | display the bot's status and some settings | -|!timeguard | | toggle the timeguard | -|!togglebl | | toggle the blacklist | -|!togglemotd | | toggle the motd | -|!togglevoteskip | | toggle the voteskip | -|!unban | @user | unban user | -|!unmute | | unmute user | -|!voteratio | @user | display the vote statistic for a user | -|!whois | @user | returns plug related information about user | +### Resident DJ -Resident DJ ------------ +| Command | Arguments | Description | +|:-------:|:---------:|:-----------:| +| !link | — | give a link to the current song. | -|Command | Arguments | Description | -|:------:|:---------:|:--------------------------------------:| -|!link | | give a link to the current song +### User - - -User ----- - -|Command | Arguments | Description | -|:------:|:---------:|:--------------------------------------:| -|!8ball | (message) | ask the bot a question, the bot will return random variations of a yes or no answer. | -|!autowoot | | links to PlugCubed, the advised script/plugin to use for autowooting | -|!ba | | explains the Brand Ambassador rank | -|!commands | | gives a link to the commands | -|!cookie | (@user) | give a cookie to user | -|!dclookup / !dc | | use dclookup on yourself | -|!emoji | | a link to a list with emoji's | -|!eta | | shows how long before you reach the booth | -|!fb | | links to the room's Facebook page (if set in the settings) | -|!ghostbuster | @user | checks if user is ghosting | -|!gif | (message) | returns gif (from giphy) related to the tag provided. Returns a random gif if no tags are provided. | -|!help | | links to an image to help get people started on plug | -|!join | | join the roulette if it's up | -|!leave | | leave the roulette if you joined | -|!link | | when the user is the DJ, give a link to the current song | -|!op | | links to the OverPlayed list (if set in the settings) | -|!ping | | pong! | -|!purchase | | returns link to purchase more plug notes | -|!rules | | links to the rules (if set in the settings) | -|!theme | | links to the room's theme (if set in the settings) | -|!website | | links to the room's website (if set in the settings) | -|!youtube | | links to the room's youtube page (if set in the settings) | +| Command | Arguments | Description | +|:-------:|:---------:|:-----------:| +| !8ball / !ask | (message) | ask the bot a question, the bot will return random variations of a yes or no answer. | +| !autowoot | — | links to PlugCubed, the advised script/plugin to use for autowooting. | +| !ba | — | explains the Brand Ambassador rank. | +| !commands | — | gives a link to the commands. | +| !cookie | (@user) | give a cookie to user. | +| !dclookup / !dc | — | use dclookup on yourself. | +| !emoji | — | returns a link the emoji list. | +| !eta | — | shows how long before you will reach the booth. | +| !fb | — | links to the room's Facebook page (if set in the settings). | +| !ghostbuster | @user | checks if user is ghosting. | +| !gif / !giphy | (message) | returns gif (from giphy) related to the tag provided. Returns a random gif if no tags are provided. | +| !help | — | links to an image to help get people started on plug. | +| !join | — | join the roulette if it's up. | +| !leave | — | leave the roulette if you joined. | +| !link | — | when the user is the DJ, give a link to the current song. | +| !op | — | links to the OverPlayed list (if set in the settings). | +| !ping | — | returns pong! | +| !rules | — | links to the rules (if set in the settings). | +| !source | — | returns a link to the basicBot repository on GitHub. | +| !theme | — | links to the room's theme (if set in the settings). | +| !thor | — | users get moved to position 1 in the waitlist if they're worthy of Thor's hammer. | +| !website | — | links to the room's website (if set in the settings). | +| !youtube | — | links to the room's youtube page (if set in the settings). | diff --git a/lang/cs.json b/lang/cs.json new file mode 100755 index 00000000..f6fb5cf7 --- /dev/null +++ b/lang/cs.json @@ -0,0 +1,210 @@ +{ + "cookies": [ + "ti daroval\/a \u010dokol\u00e1dovou su\u0161enku!", + "ti daroval\/a jemnou dom\u00e1c\u00ed ovesnou su\u0161enku!", + "ti daroval\/a oby\u010dejnou suchou starou su\u0161enku, kter\u00e1 byla posledn\u00ed v s\u00e1\u010dku. Nevychovanec.", + "ti daroval\/a cukrovou su\u0161enku. Co? \u017d\u00e1dn\u00e1 poleva a syp\u00e1n\u00ed? 0\/10 nedot\u00fdkal bych se ji.", + "ti daroval\/a \u010dokol\u00e1dovou su\u0161enku. Po\u010dkat, jsou na ni rozinky. Bl\u00e9!", + "ti daroval\/a obrovskou su\u0161enku. Prop\u00edchnut\u00ed ji ti d\u00e1 v\u00edce su\u0161enek. Podivn\u00e9.", + "ti daroval\/a su\u0161enku \u0161t\u011bst\u00ed. Stoj\u00ed tam: \"Pro\u010d nepracuje\u0161 na \u017e\u00e1dn\u00fdch projektech?\"", + "ti daroval\/a su\u0161enku \u0161t\u011bst\u00ed. Stoj\u00ed tam: \"\u0158ekni n\u011bkomu speci\u00e1ln\u00edmu n\u011bjak\u00fd kompliment.\"", + "ti daroval\/a su\u0161enku \u0161t\u011bst\u00ed. Stoj\u00ed tam: \"Riskuj!\"", + "ti daroval\/a su\u0161enku \u0161t\u011bst\u00ed. Stoj\u00ed tam: \"Jdi ven.\"", + "ti daroval\/a su\u0161enku \u0161t\u011bst\u00ed. Stoj\u00ed tam: \"Nezapome\u0148 j\u00edst zeleninu.\"", + "ti daroval\/a su\u0161enku \u0161t\u011bst\u00ed: Stoj\u00ed tam: \"Do you even lift?\"", + "ti daroval\/a su\u0161enku \u0161t\u011bst\u00ed: Stoj\u00ed tam: \"m808 pros\u00edm\"", + "ti daroval\/a su\u0161enku \u0161t\u011bst\u00ed. Stoj\u00ed tam: \"Kdy\u017e bude\u0161 h\u00fdbat boky, z\u00edsk\u00e1\u0161 si v\u0161echny sle\u010dny.\"", + "ti daroval\/a su\u0161enku \u0161t\u011bst\u00ed. Stoj\u00ed tam: \"Miluju t\u011b.\"", + "ti daroval\/a Zlatou Su\u0161enku. Nem\u016f\u017ee\u0161 ji sn\u00edst, proto\u017ee je ze zlata. Zatracen\u011b.", + "ti daroval\/a Oreo su\u0161enku se sklenic\u00ed ml\u00e9ka!", + "ti daroval\/a duhovou su\u0161enku pe\u010denou s l\u00e1skou. :heart:", + "ti daroval\/a starou su\u0161enku, kterou zapomn\u011bl v de\u0161ti. Je plesniv\u00e1.", + "ti pe\u010de \u010derstv\u00e9 su\u0161enky. Von\u00ed b\u00e1je\u010dn\u011b." + ], + "balls": [ + "V\u011bt\u0161ina v\u011bc\u00ed nasv\u011bd\u010duje tomu, \u017ee ano. ", + "Ano", + "Mlhav\u00e1 odpov\u011b\u010f. Zkus to znovu.", + "Bezpochyby.", + "M\u00e9 zdroje \u0159\u00edkaj\u00ed, \u017ee ne.", + "Jak to vid\u00edm j\u00e1, tak ano.", + "Na to se m\u016f\u017ee\u0161 spolehnout.", + "Soust\u0159e\u010f se a zeptej se znovu.", + "Vyhl\u00eddky nejsou moc dobr\u00e9.", + "Rozhodn\u011b je to tak.", + "Rad\u011bji ti to ne\u0159eknu hned.", + "Velmi pochybn\u00e9.", + "\u00c1no - ur\u010dit\u011b.", + "To je jist\u00e9.", + "To te\u010f nelze p\u0159edv\u00eddat.", + "Pravd\u011bpodobn\u011b.", + "Zeptej se pozd\u011bji znovu.", + "Moje odpov\u011b\u010f zn\u00ed ne.", + "Dobr\u00e1 vyhl\u00eddka.", + "Na to nespol\u00e9hej.", + "Ano, v prav\u00fd \u010das.", + "Definitivn\u011b ne.", + "Bude\u0161 muset po\u010dkat.", + "M\u00e1m sv\u00e9 pochybnosti.", + "Vyhl\u00eddky jsou nejasn\u00e9.", + "Vypad\u00e1 to dob\u0159e podle m\u011b.", + "Kdo v\u00ed...", + "Vypad\u00e1 to dob\u0159e!", + "Mo\u017en\u00e1.", + "D\u011bl\u00e1\u0161 si srandu?", + "Nes\u00e1zej na to.", + "Zapome\u0148 na to." + ], + "nodatafound": "Nebyla nalezena \u017e\u00e1dn\u00e1 p\u0159edchoz\u00ed data.", + "currentlang": "\/me Aktu\u00e1ln\u00ed jazyk: %%LANGUAGE%%", + "langerror": "\/me Jazyk, kter\u00fd jste si vybral\/a, je nedostupn\u00fd. Pros\u00edm, nav\u0161tivte %%LINK%% k nalezen\u00ed seznamu dostupn\u00fdch jazyk\u016f.", + "langset": "\/me Jazyk je nyn\u00ed nastaven na: %%LANGUAGE%%", + "retrievingdata": "Na\u010d\u00edt\u00e1n\u00ed d\u0159\u00edve ulo\u017een\u00fdch dat.", + "datarestored": "D\u0159\u00edve ulo\u017een\u00e1 data \u00fasp\u011b\u0161n\u011b na\u010dtena.", + "greyuser": "Pouze vyhazova\u010di a vy\u0161\u0161\u00ed mohou spustit bota.", + "bouncer": "Bot nem\u016f\u017ee p\u0159esouvat lidi, kdy\u017e je spu\u0161t\u011bn jako vyhazova\u010d.", + "online": "\/me %%BOTNAME%% v%%VERSION%% je online!", + "welcome": "\/me V\u00edtej %%NAME%%", + "welcomeback": "\/me V\u00edtej zp\u011bt, %%NAME%%", + "songknown": "\/me @%%NAME%%, tato skladba je ji\u017e v DJ historii.", + "notavailable": "\/me @%%NAME%%, skladba, kterou jsi hr\u00e1l\/a, nebyla dotupn\u00e1.", + "timelimit": "\/me @%%NAME%%, tvoje skladba je del\u0161\u00ed ne\u017e %%MAXLENGTH%% minut, pot\u0159ebuje\u0161 svolen\u00ed hr\u00e1t del\u0161\u00ed skladby.", + "permissionownsong": "\/me :up: @%%NAME%% m\u00e1 pr\u00e1vo hr\u00e1t svoj\u00ed produkci.", + "isblacklisted": "Tato skladba je na %%BLACKLIST%% blacklistu! P\u0159eskakuji...", + "isopen": "\/me Ruleta je spu\u0161t\u011bna! Napi\u0161 !join pro p\u0159ihl\u00e1\u0161en\u00ed! (Hra, ve kter\u00e9 je n\u00e1hodn\u00fd \u00fa\u010dastn\u00edk p\u0159esunut na n\u00e1hodnou pozici ve front\u011b)", + "winnerpicked": "\/me V\u00edt\u011bz byl vybr\u00e1n! @%%NAME%% na pozici %%POSITION%%.", + "ball": "\/me %%NAME%% se zeptal\/a: \"%%QUESTION%%\" a %%BOTNAME%% odpov\u011bd\u011bl: \"%%RESPONSE%%\"", + "notghosting": "[%%NAME1%%] %%NAME2%% neghostuje.", + "ghosting": "[%%NAME1%%] %%NAME2%% bu\u010f ghostuje nebo zde nen\u00ed.", + "alreadyadding": "\/me U\u017eivatel je ji\u017e p\u0159id\u00e1n! Zm\u011bna po\u017eadovan\u00e9 pozice na %%POSITION%%.", + "adding": "\/me P\u0159idal @%%NAME%% do fronty. Sou\u010dasn\u00e1 pozice: %%POSITION%%.", + "usernotfound": "\/me U\u017eivatel nenalezen.", + "notdisconnected": "\/me @%%NAME%% Neodpojil\/a jsi se v dob\u011b, co je bot spu\u0161t\u011bn.", + "noposition": "\/me Posledn\u00ed pozice nen\u00ed zn\u00e1ma. Po\u0159adn\u00edk pot\u0159ebuje aktualizovat alespo\u0148 jednou zaregistrovanou posledn\u00ed pozic\u00ed u\u017eivatele.", + "toolongago": "\/me @%%NAME%% se odpojil\/a (DC nebo nep\u0159\u00edtomnost) p\u0159ed p\u0159\u00edli\u0161 dlouhou dobou: %%TIME%%.", + "valid": "\/me @%%NAME%% byl\/a odpojen\/a p\u0159ed %%TIME%% a m\u011bl\/a by b\u00fdt na pozici %%POSITION%%.", + "warning1": "\/me @%%NAME%%, byl\/a jsi afk po dobu %%TIME%%, pros\u00edm odpov\u011bz do 2 minut nebo bude\u0161 odstran\u011bn\/a z fronty.", + "warning2": "\/me @%%NAME%%, bude\u0161 odstran\u011bn\/a z fronty kv\u016fli AFK, pokud neodpov\u00ed\u0161.", + "afkremove": "\/me @%%NAME%%, byl\/a jsi odstran\u011bn\/a z d\u016fvodu AFK po dobu %%TIME%%. Byl\/a jsi na pozici %%POSITION%%. Napi\u0161 alespo\u0148 jednou za %%MAXIMUMAFK%% minut, pokud chce\u0161 hr\u00e1t.", + "caps": "\/me @%%NAME%%, dej si bacha na capslock, pros\u00edm.", + "askskip": "\/me @%%NAME%%, ne\u017e\u00e1dej o p\u0159esko\u010den\u00ed.", + "spam": "\/me @%%NAME%%, pros\u00edm nespamuj.", + "roomadvertising": "\/me @%%NAME%%, nepos\u00edlej odkazy na jin\u00e9 m\u00edstnosti pros\u00edm.", + "adfly": "\/me @%%NAME%%, pros\u00edm zm\u011b\u0148 si sv\u016fj AutoWoot. Navrhujeme PlugCubed: http:\/\/plugcubed.net\/", + "validgiftags": "/me [@%%NAME%%] [Tags: %%TAGS%%] http://i.giphy.com/%%ID%%.gif", + "invalidgiftags": "/me [@%%NAME%%] [Tags: %%TAGS%%] Neplatný tag, zkus jiný.", + "validgifrandom": "/me [@%%NAME%%] [Náhodný GIF] http://media.giphy.com/media/%%ID%%/giphy.gif", + "invalidgifrandom": "\/me [@%%NAME%%] Neplatn\u00e1 \u017e\u00e1dost, zkus to znovu.", + "invalidtime": "\/me [@%%NAME%%] Byl zad\u00e1n neplatn\u00fd \u010das.", + "nouserspecified": "\/me [@%%NAME%%] Nebyl zad\u00e1n u\u017eivatel.", + "invaliduserspecified": "\/me [@%%NAME%%] Byl zad\u00e1n neplatn\u00fd u\u017eivatel.", + "nolistspecified": "\/me [@%%NAME%%] Nebyl zad\u00e1n seznam.", + "invalidlistspecified": "\/me [@%%NAME%%] Byl zad\u00e1n neplatn\u00fd seznam.", + "novaliduserspecified": "\/me [@%%NAME%%] Byl zad\u00e1n neplatn\u00fd u\u017eivatel.", + "nolimitspecified": "\/me [@%%NAME%%] Nebyl zad\u00e1n limit.", + "invalidlimitspecified": "\/me [@%%NAME%%] Neplatn\u00fd limit.", + "invalidpositionspecified": "\/me [@%%NAME%%] Byla zad\u00e1na neplatn\u00e1 pozice.", + "whois": "\/me [%%NAME1%%] U\u017eivatelsk\u00e9 jm\u00e9no: %%NAME2%%, ID: %%ID%%, Hodnost: %%RANK%%, P\u0159ipojen: %%JOINED%%, \u00darove\u0148: %%LEVEL%%, Jazyk: %%LANGUAGE%%, Avatar: %%AVATAR%%, Status: %%STATUS%%%%PROFILE%%", + "toggleon": "\/me [@%%NAME%%] %%FUNCTION%% zapnuto.", + "toggleoff": "\/me [@%%NAME%%] %%FUNCTION%% vypnuto.", + "cmddeletion": "command deletion", + "afkremoval": "AFK removal", + "afksremoved": "AFK's removed", + "afklimit": "AFK limit", + "autodisable": "autodisable", + "autoskip": "autoskip", + "newblacklisted": "\/me [@%%NAME%%] Tato skaldba pat\u0159\u00ed do %%BLACKLIST%% blacklistu! [ %%AUTHOR%% - %%TITLE%% - %%MID%% ]", + "blinfo": "[@%%NAME%%] Blacklist informace - autor: %%AUTHOR%%, n\u00e1zev: %%TITLE%%, mid: %%SONGID%%", + "blacklist": "blacklist", + "cycleguard": "cycleguard", + "timeguard": "timeguard", + "chatfilter": "chatfilter", + "historyskip": "hystoryskip", + "lockdown": "lockdown", + "lockguard": "lockguard", + "usercommands": "usercommands", + "motd": "MotD", + "welcomemsg": "welcome message", + "songstats": "song statistics", + "etarestriction": "eta restriction", + "voteskip": "voteskip", + "voteskiplimit": "\/me [@%%NAME%%] Voteskip limit je nastaven na %%LIMIT%% meh\u016f.", + "voteskipexceededlimit": "\/me @%%NAME%%, tvoje skladba p\u0159ekro\u010dila limit k p\u0159esko\u010den\u00ed (%%LIMIT%% meh\u016f).", + "voteskipinvalidlimit": "\/me [@%%NAME%%] Neplatn\u00fd limit k p\u0159esko\u010den\u00ed, pros\u00edm zkus to pros\u00edm znovu s pou\u017eit\u00edm \u010d\u00edsla k zaznamen\u00e1n\u00ed meh\u016f.", + "voteskipsetlimit": "\/me [@%%NAME%%] Limit voteskip je nastaven na %%LIMIT%%.", + "activeusersintime": "\/me [@%%NAME%% Bylo tu %%AMOUNT%% u\u017eivatel\u016f, kte\u0159\u00ed psali v posledn\u00edch %%TIME%% minut\u00e1ch.", + "maximumafktimeset": "\/me [@%%NAME%%] Maxim\u00e1ln\u00ed doba, po kterou m\u016f\u017ee b\u00fdt u\u017eivatel afk, nastavena na %%TIME%% minut.", + "afkstatusreset": "\/me [@%%NAME%%] Vynuloval\/a afk status u\u017eivatele @%%USERNAME%%.", + "inactivefor": "\/me [@%%NAME%%] @%%USERNAME%% byl\/a neaktivn\u00ed po dobu %%TIME%%.", + "inactivelonger": "\/me [@%%NAME%%] @%%USERNAME%% je neaktivn\u00ed d\u00e9le ne\u017e je %%BOTNAME%% spu\u0161t\u011bn.", + "autowoot": "\/me Doporu\u010dujeme PlugCubed pro automatick\u00fd woot: http:\/\/plugcubed.net\/", + "brandambassador": "\/me Brand Ambassador je hlas u\u017eivatel\u016f plug.dj. Podporuj\u00ed akce, pom\u00e1haj\u00ed komunit\u00e1m, sd\u00edlej\u00ed plug.dj vzkaz po cel\u00e9m sv\u011bt\u011b. Pro v\u00edce informac\u00ed: https:\/\/plug.dj\/ba.", + "bouncerplusrank": "\/me [@%%NAME%%] Mus\u00ed\u0161 b\u00fdt mana\u017eer a nebo mus\u00ed b\u00fdt povolen Bouncer+.", + "chatcleared": "\/me [@%%NAME%%] Vy\u010distil\/a chat.", + "deletechat": "\/me [@%%NAME%%] Vy\u010distil\/a chat od %%USERNAME%%.", + "commandslink": "\/me %%BOTNAME%% p\u0159\u00edkazy: %%LINK%%", + "eatcookie": "\/me J\u00edst su\u0161enky.", + "nousercookie": "\/em nevid\u00edm u\u017eivatele %%NAME%% v m\u00edstnosti, nem\u016f\u017ee\u0161 s n\u00edm j\u00edst su\u0161enky.", + "selfcookie": "\/me @%%NAME%%, nejsi trochu chamtiv\u00fd\/\u00e1? D\u00e1vat su\u0161enky sob\u011b. Heh. Rozd\u011bl se s ostatn\u00edmi!", + "cookie": "\/me @%%NAMETO%%, %%NAMEFROM%% %%COOKIE%%", + "cycleguardtime": "\/me [@%%NAME%%] Cycleguard je nastaven na %%TIME%% minut).", + "dclookuprank": "\/me [@%%NAME%%] Pouze vyhazova\u010d a vy\u0161\u0161\u00ed m\u016f\u017ee pou\u017e\u00edvat lookup pro ostatn\u00ed.", + "emojilist": "\/me Emoji list: %%LINK%%", + "notinwaitlist": "\/me @%%NAME%%, nejsi ve front\u011b.", + "youarenext": "\/me @%%NAME%%, bude\u0161 DJ a\u017e dohraje tahle skladba.", + "youaredj": "\/me @%%NAME%%, jsi pr\u00e1v\u011b DJ.", + "eta": "\/me @%%NAME%%, jsi na pozici %%POSITION%% ve front\u011b a bude\u0161 na \u0159ad\u011b p\u0159ibli\u017en\u011b za %%TIME%%.", + "facebook": "\/me Likni n\u00e1s na facebooku: %%LINK%%", + "starterhelp": "\/me Tenhle obr\u00e1zek ti pom\u016f\u017ee za\u010d\u00edt na plugu: %%LINK%%", + "roulettejoin": "\/me @%%NAME%% se p\u0159ihl\u00e1sil\/a do rulety! (!leave pokud ji chce\u0161 opustit)", + "jointime": "\/me [@%%NAMEFROM%%] @%%USERNAME%% je v m\u00edstnosti po dobu %%TIME%%.", + "kickrank": "\/me [@%%NAME%%] nem\u016f\u017ee\u0161 pou\u017e\u00edt kick na u\u017eivatele se stejnou nebo vy\u0161\u0161\u00ed hodnost\u00ed!", + "kick": "\/me [@%%NAME%%], @%%USERNAME%% you are being kicked from the community for %%TIME%% minutes.", + "kill": "\/me Vyp\u00edn\u00e1n\u00ed", + "logout": "\/me [@%%NAME%%] Odhla\u0161uje %%BOTNAME%%", + "rouletteleave": "\/me @%%NAME%% opustil\/a ruletu!", + "songlink": "\/me [@%%NAME%%] Link na aktu\u00e1ln\u00ed skladbu: %%LINK%%", + "usedlockskip": "\/me [%%NAME%% pou\u017eil\/a lockskip]", + "usedskip": "\/me [%%NAME%% pou\u017eil\/a skip]", + "skippos": "\/me [@%%NAME%%] DJ bude p\u0159esunut na pozici %%POSITION%% kdy\u017e bude p\u0159esko\u010den.", + "lockguardtime": "\/me [@%%NAME%%] Lockguard je nastaven na %%TIME%% minut.", + "maxlengthtime": "\/me [@%%NAME%%] Maxim\u00e1ln\u00ed povolen\u00e1 d\u00e9lka skladby nastavena na %%TIME%% minut.", + "motdset": "\/me MotD nastaven na: %%MSG%%", + "motdintervalset": "\/me MotD interval nastaven na %%INTERVAL%%.", + "currentbotname": "\/me Jm\u00e9no bota je: %%BOTNAME%%", + "botnameset": "\/me Jm\u00e9no bota je zm\u011bn\u011bno na: %%BOTNAME%%", + "addbotwaitlist": "\/me @%%NAME%%, nesna\u017e se m\u011b p\u0159idat do fronty, pros\u00edm.", + "move": "\/me [%%NAME%% pou\u017eil\/a move]", + "mutednotime": "\/me [@%%NAME%%] Uml\u010del\/a @%%USERNAME%%.", + "mutedmaxtime": "\/me [@%%NAME%%] M\u016f\u017ee\u0161 uml\u010det u\u017eivatele maxim\u00e1ln\u011b na %%TIME%% minut.", + "mutedtime": "\/me [@%%NAME%%] Uml\u010del\/a @%%USERNAME%% na %%TIME%% minut.", + "unmuted": "\/me [@%%NAME%%] Zru\u0161il\/a uml\u010den\u00ed @%%USERNAME%%.", + "muterank": "\/me [@%%NAME%%] Nem\u016f\u017ee\u0161 uml\u010det osobu se stejnou nebo vy\u0161\u0161\u00ed hodnost\u00ed.", + "oplist": "\/me OP list: %%LINK%%", + "pong": "\/me Pong!", + "reload": "\/me Hned jsem zp\u011bt.", + "removenotinwl": "\/me [@%%NAME%%] Vybran\u00fd u\u017eivatel @%%USERNAME%% nen\u00ed ve front\u011b.", + "roomrules": "\/me Pros\u00edm p\u0159e\u010dt\u011bte si zde pravidla komunity: %%LINK%%", + "sessionstats": "\/me [@%%NAME%%] Celkem woot\u016f: %%WOOTS%%, celkem meh\u016f: %%MEHS%%, celkem grab\u016f: %%GRABS%%.", + "forceskip": "\/me [%%NAME%% pou\u017eil\/a forceskip]", + "madeby": "\/me Tenhle bot byl vytvo\u0159en %%NAME%%.", + "activefor": "Jsem aktivn\u00ed po dobu %%TIME%%.", + "swapinvalid": "\/me [@%%NAME%%] Byl specifikov\u00e1n neplatn\u00fd u\u017eivatel. (Nepou\u017e\u00edvej jm\u00e9na s mezerami!)", + "swapwlonly": "\/me [@%%NAME%%] Pros\u00edm vym\u011b\u0148uj pouze u\u017eivatele, kte\u0159\u00ed jsou ve front\u011b!", + "swapping": "\/me V\u00fdm\u011bna %%NAME1%% s %%NAME2%%.", + "genres": "\/me Pros\u00edm pod\u00edvejte se zde na povolen\u00e9 \u017e\u00e1nry t\u00e9to komunity: %%LINK%%", + "notbanned": "\/me [@%%NAME%%] U\u017eivatel nebyl zabanov\u00e1n.", + "unmutedeveryone": "\/me [@%%NAME%%] Zru\u0161il v\u0161em uml\u010den\u00ed.", + "unmuteeveryonerank": "\/me [@%%NAME%%] Pouze mana\u017ee\u0159i a vy\u0161\u0161\u00ed m\u016f\u017eou zru\u0161it uml\u010den\u00ed v\u0161em z\u00e1rove\u0148.", + "notmuted": "\/me [@%%NAME%%] tento u\u017eivatel nebyl uml\u010den.", + "unmuterank": "\/me [@%%NAME%%] Nem\u016f\u017ee\u0161 zru\u0161it uml\u010den\u00ed osob\u011b se stejnou nebo vy\u0161\u0161\u00ed hodnost\u00ed.", + "commandscd": "\/me [@%%NAME%%] Cooldown p\u0159\u00edkaz\u016f pro u\u017eivatele nastaven na %%TIME%% sekund.", + "voteratio": "\/me [@%%NAME%%] @%%USERNAME%% ~ woot\u016f: %%WOOT%%, meh\u016f: %%MEHS%%, pom\u011br (w\/m): %%RATIO%%.", + "website": "\/me Pros\u00edm nav\u0161tivte na\u0161e webov\u00e9 str\u00e1nky: %%LINK%%", + "youtube": "\/me [%%NAME%%] Dejte n\u00e1m odb\u011br na youtube: %%LINK%%", + "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%W\/%%GRABS%%G\/%%MEHS%%M.", + "thorNotClose": "\/me @%%NAME%%, you're not worthy of getting close to the hammer!", + "thorcd": "\/me @%%NAME%% you can try to lift the hammer in %%TIME%% minutes.", + "thorWorthy": "\/me @%%NAME%% you're worthy of the hammer :hammer:, congratulations!", + "thorNotWorthy": "\/me @%%NAME%% you're not worthy of the hammer." +} diff --git a/lang/de.json b/lang/de.json new file mode 100755 index 00000000..80e875d9 --- /dev/null +++ b/lang/de.json @@ -0,0 +1,210 @@ +{ + "cookies": [ + "hat dir einen leckeren Schokoladen Keks gegeben!", + "hat dir einen selbstgemachten Haferfloken Keks gegeben!", + "hat dir einen schmucklosen, dreckigen und alten Keks gegeben. Es war der letzte in seinem Rucksack. Toll.", + "hat dir ein Zuckerpl\u00e4tzchen gegeben. Was, kein Zuckerguss und Streuseln? 0\/10 w\u00fcrden es nicht essen.", + "gibt dir einen Schokoladen Keks. Oh Warte, da sind Rosinen drine. Bleck!", + "gibt dir einen riesigen Keks.", + "gibt dir einen Gl\u00fcckskeks. Darauf steht: \"Warum arbeitest du momentan an keinen Projekten?\"", + "gibt dir einen Gl\u00fcckskeks. Darauf steht: \"Mach jemanden Besonderes heute ein Kompliment!\"", + "gibt dir einen Gl\u00fcckskeks. Darauf steht: \"Riskiere etwas!\"", + "gibt dir einen Gl\u00fcckskeks. Darauf steht: \"Geh nach drau\u00dfen!\"", + "gibt dir einen Gl\u00fcckskeks. Darauf steht: \"Vergiss nicht, dein Gem\u00fcse zu essen!\"", + "gibt dir einen Gl\u00fcckskeks. Darauf steht: \"Do you even lift\"?", + "gibt dir einen Gl\u00fcckskeks. Darauf steht: \"m808 pls!\"", + "gibt dir einen Gl\u00fcckskeks. Darauf steht: \"Wenn du deine H\u00fcften bewegst, bekommst du alle Frauen.\"", + "gibt dir einen Gl\u00fcckskeks. Darauf steht: \"Ich liebe dich!\"", + "gibt dir einen goldenen Keks. Du kannst ihn nicht essen, da er aus Gold ist. Verdammt!", + "gibt dir einen Oreo Keks mit einem Glas Milch!", + "gibt dir einen Regenbogen Keks gemacht mit Liebe <3", + "gibt dir einen alten Keks, der im Regen gelassen wurde. Er ist schimmlig.", + "backt dir einen frischen Keks, er schmeckt wunderbar." + ], + "balls": [ + "Die Zeichen deuten auf Ja.", + "Ja.", + "Versuch es sp\u00e4ter nochmal.", + "Ohne jeden Zweifel.", + "Meine Quellen sagen Nein.", + "So wie ich das sehe, ja.", + "Du kannst dich darauf verlassen.", + "Konzentriere dich und frage erneut.", + "Sieht nicht so gut aus.", + "Es ist umstritten.", + "Ich sage dir lieber nicht die Antwort.", + "Sehr Zweifelhaft.", + "Ja, definitiv.", + "Es ist sicher.", + "Kann ich nicht vorhersagen.", + "sehr wahrscheinlich", + "Frag sp\u00e4ter erneut", + "Meine Antwort ist Nein.", + "Sieht gut aus.", + "Z\u00e4hl nicht darauf.", + "Ja, in geraumer Zeit.", + "Auf keinen Fall.", + "Definitiv nicht.", + "Du wirst warten m\u00fcssen.", + "Ich habe meine Zweifel.", + "Sieht so und so aus.", + "Sieht gut aus f\u00fcr mich!", + "Wer wei\u00df?", + "Sieht gut aus!", + "Wahrscheinlich.", + "Willst du mich verarschen?", + "Du kannst nicht darauf z\u00e4hlen" + ], + "nodatafound": "Keine vorhergehenden Daten gefunden.", + "currentlang": "\/me Zurzeit eingestellte Sprache: %%LANGUAGE%%", + "langerror": "\/me Die ausgew\u00e4hlte Sprache ist nicht verf\u00fcgbar. Bitte besuche %%LINK%%, um eine Liste der verf\u00fcgbaren Sprachen zu finden.", + "langset": "\/me Nun eingestellte Sprache: %%LANGUAGE%%", + "retrievingdata": "Ruft zuvor gespeicherte Daten ab.", + "datarestored": "Zuvor gespeicherte Daten erfolgreich abgerufen.", + "greyuser": "Nur Bouncer und aufw\u00e4rts k\u00f6nnen den Bot betreiben.", + "bouncer": "Der Bot kann keine Leute in der Warteliste verschieben, wenn er von einem Bouncer betrieben wird.", + "online": "\/me %%BOTNAME%% v%%VERSION%% ist online!", + "welcome": "\/me Willkommen %%NAME%%", + "welcomeback": "\/me Willkommen zur\u00fcck, %%NAME%%", + "songknown": "\/me @%%NAME%%, dieser Song ist im DJ Verlauf.", + "notavailable": "\/me @%%NAME%% der Song, den du gespielt hast, war nicht verf\u00fcgbar.", + "timelimit": "\/me @%%NAME%%, dein Song \u00fcberschreitet die Maximall\u00e4nge von %%MAXLENGTH%% Minuten. Du ben\u00f6tigst eine Erlaubnis, um l\u00e4ngere Songs spielen zu k\u00f6nnen.", + "permissionownsong": "\/me :up: @%%NAME%% hat die Erlaubnis, seine eigene Produktion zu spielen.", + "isblacklisted": "\/me Dieser Song steht auf der %%BLACKLIST%% Blacklist! \u00dcberspringe...", + "isopen": "\/me Das Roulette ist nun ge\u00f6ffnet! Schreibe !join, um teilzunehmen.", + "winnerpicked": "\/me Ein Gewinner wurde gefunden! @%%NAME%% auf die Position %%POSITION%%.", + "ball": "\/me %%NAME%%s Frage war: \u201e%%QUESTION%%\u201c und %%BOTNAME%%s Antwort ist: \u201e%%RESPONSE%%\u201c", + "notghosting": "[%%NAME1%%] %%NAME2%% ghostet nicht.", + "ghosting": "[%%NAME1%%] %%NAME2%% ghostet entweder oder ist nicht hier.", + "alreadyadding": "\/me Benutzer wird bereits hinzugef\u00fcgt! Die gew\u00fcnschte Position wurde zu %%POSITION%% ge\u00e4ndert.", + "adding": "\/me @%%NAME%% wurde der Warteschlange hinzugef\u00fcgt. Derzeitige Position in der Warteschlange: %%POSITION%%.", + "usernotfound": "\/me Benutzer nicht gefunden.", + "notdisconnected": "\/me @%%NAME%%s Verbindung wurde in meiner Zeit hier nicht getrennt.", + "noposition": "\/me Letzte Position unbekannt. Die Warteschlange muss sich mindestens einmal aktualisieren, um die letzte Position eines Benutzers zu registrieren.", + "toolongago": "\/me @%%NAME%%s letzter Verbindungsabbruch ist zu lange her: %%TIME%%.", + "valid": "\/me @%%NAME%%s Verbindung brach vor %%TIME%% ab und sollte an der Position %%POSITION%% stehen.", + "warning1": "\/me @%%NAME%%, du warst f\u00fcr %%TIME%% AFK. Bitte antworte in den n\u00e4chsten 2 Minuten oder du wirst entfernt.", + "warning2": "\/me @%%NAME%%, du wirst bald entfernt, weil du AFK bist, falls du nicht antwortest.", + "afkremove": "\/me @%%NAME%%, du wurdest entfernt, da du f\u00fcr %%TIME%% AFK warst. Du warst auf Position %%POSITION%%. Chatte mindestens einmal alle %%MAXIMUMAFK%% Minuten, wenn du einen Song spielen m\u00f6chtest.", + "caps": "\/me @%%NAME%%, l\u00f6se bitte deine Feststelltaste los.", + "askskip": "\/me @%%NAME%%, verlange kein \u00dcberspringen.", + "spam": "\/me @%%NAME%%, spamme bitte nicht.", + "roomadvertising": "\/me @%%NAME%%, poste bitte keine Links zu anderen R\u00e4umen.", + "adfly": "\/me @%%NAME%%, bitte \u00e4ndere dein Autowootprogramm. Wir empfehlen PlugCubed: http:\/\/plugcubed.net\/", + "validgiftags": "/me [@%%NAME%%] [Schlagwörter: %%TAGS%%] http://i.giphy.com/%%ID%%.gif", + "invalidgiftags": "/me [@%%NAME%%] [Schlagwörter: %%TAGS%%] Ungültige Schlagwörter. Versuche etwas Anderes.", + "validgifrandom": "/me [@%%NAME%%] [Zufällige GIF] http://i.giphy.com/%%ID%%.gif", + "invalidgifrandom": "\/me [@%%NAME%%] Ung\u00fcltige Anfrage. Versuche es erneut.", + "invalidtime": "\/me [@%%NAME%%] Ung\u00fcltig festgelegte Zeit.", + "nouserspecified": "\/me [@%%NAME%%] Kein Benutzer festgelegt.", + "invaliduserspecified": "\/me [@%%NAME%%] Ung\u00fcltiger Benutzer festgelegt.", + "nolistspecified": "\/me [@%%NAME%%] Keine Liste festgelegt.", + "invalidlistspecified": "\/me [@%%NAME%%] Ung\u00fcltige Liste festgelegt.", + "novaliduserspecified": "\/me [@%%NAME%%] Kein g\u00fcltiger Benutzer festgelegt.", + "nolimitspecified": "\/me [@%%NAME%%] Kein Limit festgelegt.", + "invalidlimitspecified": "\/me [@%%NAME%%] Ung\u00fcltiges Limit.", + "invalidpositionspecified": "\/me [@%%NAME%%] Ung\u00fcltige Position festgelegt.", + "whois": "\/me [%%NAME1%%] Benutzername: %%NAME2%%, ID: %%ID%%, Rang: %%RANK%%, Beigetreten: %%JOINED%%, Level: %%LEVEL%%, Sprache: %%LANGUAGE%%, Avatar: %%AVATAR%%, Status: %%STATUS%%%%PROFILE%%", + "toggleon": "\/me [@%%NAME%%] %%FUNCTION%% aktiviert.", + "toggleoff": "\/me [@%%NAME%%] %%FUNCTION%% deaktiviert.", + "cmddeletion": "Befehll\u00f6schung", + "afkremoval": "AFK Entfernung", + "afksremoved": "AFK ist entfernt", + "afklimit": "AFK Limit", + "autodisable": "Autodeaktivierung", + "autoskip": "Autoskip", + "newblacklisted": "\/me [@%%NAME%%] Dieser Song ist auf der %%BLACKLIST%% blacklist! [ %%AUTHOR%% - %%TITLE%% - %%MID%% ]", + "blinfo": "[@%%NAME%%] Blacklist Informationen - Autor: %%AUTHOR%%, Titel: %%TITLE%%, mid: %%SONGID%%", + "blacklist": "blacklist", + "cycleguard": "cycleguard", + "timeguard": "timeguard", + "chatfilter": "chatfilter", + "historyskip": "historyskip", + "lockdown": "lockdown", + "lockguard": "lockguard", + "usercommands": "usercommands", + "motd": "MotD", + "welcomemsg": "Willkommen Nachricht", + "songstats": "Song Statistik", + "etarestriction": "eta restriction", + "voteskip": "voteskip", + "voteskiplimit": "\/me [@%%NAME%%] Voteskip limit liegt momentan bei %%LIMIT%% mehs.", + "voteskipexceededlimit": "\/me @%%NAME%%, Der Song hat das Voteskip limit erreicht (%%LIMIT%% mehs).", + "voteskipinvalidlimit": "\/me [@%%NAME%%] Ung\u00fcltiges Voteskip Limit, bitte gib eine Nummer ein, um dies einzustellen.", + "voteskipsetlimit": "\/me [@%%NAME%%] Voteskip limit ist eingestellt auf %%LIMIT%%.", + "activeusersintime": "\/me [@%%NAME%%] %%AMOUNT%% Benutzer haben in den letzten %%TIME%% Minuten gechattet.", + "maximumafktimeset": "\/me [@%%NAME%%] Die maximal erlaubte AFK Zeit liegt bei %%TIME%% Minuten.", + "afkstatusreset": "\/me [@%%NAME%%] Resette den AFK status von @%%USERNAME%%.", + "inactivefor": "\/me [@%%NAME%%] @%%USERNAME%% ist inaktiv seit %%TIME%%.", + "inactivelonger": "\/me [@%%NAME%%] @%%USERNAME%% war l\u00e4nger inaktiv als %%BOTNAME%%'s online ist.", + "autowoot": "\/me Wir empfehlen PlugCubed f\u00fcr autowooting: http:\/\/plugcubed.net\/", + "brandambassador": "\/me A Brand Ambassador ist die Stimme der plug.dj users. Sie promoten und unterst\u00fctzen die Community und teilen die Plug.Dj Nachricht \u00fcber die ganze Welt.https:\/\/plug.dj\/ba", + "bouncerplusrank": "\/me [@%%NAME%%] Du musst ein Manager sein oder die F\u00e4higkeit haben, Bouncer+ zu aktivieren.", + "chatcleared": "\/me [@%%NAME%%] hat den Chat gereinigt.", + "deletechat": "\/me [@%%NAME%%] hat alle Nachrichten von %%USERNAME%% entfernt.", + "commandslink": "\/me %%BOTNAME%% Befehle: %%LINK%%", + "eatcookie": "\/me isst einen Keks.", + "nousercookie": "\/em sieht %%NAME%% nicht im Raum und isst den Keks selber.", + "selfcookie": "\/me @%%NAME%%, du bist heute nicht so gut drauf, oder? Gibt sich selbst einfach einen Keks. Teile es lieber mit anderen Menschen!", + "cookie": "\/me @%%NAMETO%%, %%NAMEFROM%% %%COOKIE%%", + "cycleguardtime": "\/me [@%%NAME%%] Der cycleguard ist eingestellt auf %%TIME%% Minuten.", + "dclookuprank": "\/me [@%%NAME%%] Nur Bouncer und h\u00f6her k\u00f6nnen ein lookup f\u00fcr andere machen.", + "emojilist": "\/me Emoji list: %%LINK%%", + "notinwaitlist": "\/me @%%NAME%%, du bist nicht auf der Warteliste.", + "youarenext": "\/me @%%NAME%%, du bist dran nach diesem Song.", + "youaredj": "\/me @%%NAME%%, Du djst gerade.", + "eta": "\/me @%%NAME%%, du bist in der Position %%POSITION%% in der Warteliste und wirst in ungef\u00e4hr %%TIME%% Minuten dran sein.", + "facebook": "\/me Like uns auf facebook: %%LINK%%", + "starterhelp": "\/me Dieses Bild hilft dir, auf Plug.Dj klar zu kommen: %%LINK%%", + "roulettejoin": "@%%NAME%% ist dem Roulette beigetreten (F\u00fchr den Befehl !leave aus, wenn du es verlassen willst).", + "jointime": "\/me [@%%NAMEFROM%%] @%%USERNAME%% ist schon im Chatraum seit %%TIME%% Minuten.", + "kickrank": "\/me [@%%NAME%%] Du kannst keine Benutzer kicken, die den gleichen oder einen h\u00f6heren Rang als du haben!", + "kick": "\/me [@%%NAME%%], @%%USERNAME%% du wurdest von der Community verbannt f\u00fcr %%TIME%% Minuten.", + "kill": "\/me Fahre herunter.", + "logout": "\/me [@%%NAME%%] Logge mich aus %%BOTNAME%%", + "rouletteleave": "\/me @%%NAME%% hat das Roulette verlassen!", + "songlink": "\/me [@%%NAME%%] Link zum momentanen Song: %%LINK%%", + "usedlockskip": "\/me [%%NAME%% hat lockskip benutzt.", + "usedskip": "\/me [%%NAME%% hat skip benutzt.", + "skippos": "\/me [@%%NAME%%] Djs werden von nun auf Position %%POSITION%% verschoben, wenn sie \u00fcbersprungen wurden.", + "lockguardtime": "\/me [@%%NAME%%] der lockguard ist gesetzt auf %%TIME%% Minuten.", + "maxlengthtime": "\/me [@%%NAME%%] Die maximal erlaubte Song-L\u00e4nge ist gesetzt auf %%TIME%% Minuten.", + "motdset": "\/me MotD gesetzt auf: %%MSG%%", + "motdintervalset": "\/me MotD interval gesetzt auf: %%INTERVAL%%.", + "currentbotname": "\/me Der Bot hei\u00dft momentan: %%BOTNAME%%", + "botnameset": "\/me Der Bot hei\u00dft nun: %%BOTNAME%%", + "addbotwaitlist": "\/me @%%NAME%%, bitte versuch nicht, mich auf die Warteliste zu setzen", + "move": "\/me [%%NAME%% hat move benutzt]", + "mutednotime": "\/me [@%%NAME%%] Muted @%%USERNAME%%.", + "mutedmaxtime": "\/me [@%%NAME%%] Du kannst Benutzer maximal f\u00fcr %%TIME%% Minuten stumm schalten.", + "mutedtime": "\/me [@%%NAME%%] Muted @%%USERNAME%% f\u00fcr %%TIME%% Minuten.", + "unmuted": "\/me [@%%NAME%%] Unmuted @%%USERNAME%%.", + "muterank": "\/me [@%%NAME%%] Du kannst Benutzer nicht stumm schalten, welche den gleichen oder einen h\u00f6heren Rang als du haben.", + "oplist": "\/me OP Liste: %%LINK%%", + "pong": "\/me Pong!", + "reload": "\/me Bin gleich zur\u00fcck.", + "removenotinwl": "\/me [@%%NAME%%] Benutzer @%%USERNAME%% ist nicht auf der Warteliste.", + "roomrules": "\/me Du kannst die Regeln f\u00fcr den Chatroom hier finden: %%LINK%%", + "sessionstats": "\/me [@%%NAME%%] Total woots: %%WOOTS%%, total mehs: %%MEHS%%, total grabs: %%GRABS%%.", + "forceskip": "\/me [%%NAME%% hat forceskip benutzt]", + "madeby": "\/me Der Bot wurde entwickelt von %%NAME%%.", + "activefor": "Ich bin aktiv seit %%TIME%%.", + "swapinvalid": "\/me [@%%NAME%%] Ung\u00fcltiger Benutzer festgelegt. (Keine Namen mit einem Leerzeichen!)", + "swapwlonly": "\/me [@%%NAME%%] Bitte vertausch nur Benutzer, die in der Warteliste sind!", + "swapping": "\/me Vertausche %%NAME1%% mit %%NAME2%%.", + "genres": "\/me Du kannst die Chatroom Genres hier finden: %%LINK%%", + "notbanned": "\/me [@%%NAME%%] Der Benutzer ist nicht gesperrt.", + "unmutedeveryone": "\/me [@%%NAME%%] Keiner ist jetzt mehr stumm geschaltet.", + "unmuteeveryonerank": "\/me [@%%NAME%%] Nur Manager und h\u00f6her k\u00f6nnen alle Leute gleichzeitig unmuten.", + "notmuted": "\/me [@%%NAME%%] Dieser Benutzer ist nicht stumm geschaltet!", + "unmuterank": "\/me [@%%NAME%%] Du kannst Personen mit einem Rank, der gleich oder h\u00f6her ist als deiner, nicht unmuten.", + "commandscd": "\/me [@%%NAME%%] Der cooldown f\u00fcr Commands ist nun festgelegt auf %%TIME%% seconds.", + "voteratio": "\/me [@%%NAME%%] @%%USERNAME%% ~ woots: %%WOOT%%, mehs: %%MEHS%%, ratio (w\/m): %%RATIO%%.", + "website": "\/me Bitte besuch unsere Website: %%LINK%%", + "youtube": "\/me [%%NAME%%] Subscribe unseren Youtube Channel! %%LINK%%", + "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%W\/%%GRABS%%G\/%%MEHS%%M.", + "thorNotClose": "\/me @%%NAME%%, you're not worthy of getting close to the hammer!", + "thorcd": "\/me @%%NAME%% you can try to lift the hammer in %%TIME%% minutes.", + "thorWorthy": "\/me @%%NAME%% you're worthy of the hammer :hammer:, congratulations!", + "thorNotWorthy": "\/me @%%NAME%% you're not worthy of the hammer." +} diff --git a/lang/en.json b/lang/en.json old mode 100644 new mode 100755 index eb44cfcd..2905a38b --- a/lang/en.json +++ b/lang/en.json @@ -43,7 +43,6 @@ "Outlook good.", "Don't count on it.", "Yes, in due time.", - "My sources say no.", "Definitely not.", "You will have to wait.", "I have my doubts.", @@ -58,7 +57,7 @@ ], "nodatafound": "No previous data found.", "currentlang": "\/me Language currently set to: %%LANGUAGE%%", - "langerror": "\/me The language you've selected isn't available. Please visit %%LINK%% to find a list of languages available.", + "langerror": "\/me The language you've selected isn't available. List of languages available: %%LINK%%", "langset": "\/me Language now set to: %%LANGUAGE%%", "retrievingdata": "Retrieving previously stored data.", "datarestored": "Previously stored data successfully retrieved.", @@ -92,9 +91,9 @@ "spam": "\/me @%%NAME%%, please don't spam.", "roomadvertising": "\/me @%%NAME%%, don't post links to other rooms please.", "adfly": "\/me @%%NAME%%, please change your autowoot program. We suggest PlugCubed: http:\/\/plugcubed.net\/", - "validgiftags": "\/me [@%%NAME%%] http:\/\/i.giphy.com\/%%ID%%.gif [Tags: %%TAGS%%]", - "invalidgiftags": "\/me [@%%NAME%%] Invalid tags, try something different. [Tags: %%TAGS%%]", - "validgifrandom": "\/me [@%%NAME%%] http:\/\/i.giphy.com\/%%ID%%.gif [Random GIF]", + "validgiftags": "\/me [@%%NAME%%] [Tags: %%TAGS%%] http:\/\/i.giphy.com\/%%ID%%.gif", + "invalidgiftags": "\/me [@%%NAME%%] [Tags: %%TAGS%%] Invalid tags, try something different.", + "validgifrandom": "\/me [@%%NAME%%] [Random GIF] http:\/\/i.giphy.com\/%%ID%%.gif", "invalidgifrandom": "\/me [@%%NAME%%] Invalid request, try again.", "invalidtime": "\/me [@%%NAME%%] Invalid time specified.", "nouserspecified": "\/me [@%%NAME%%] No user specified.", @@ -133,7 +132,7 @@ "voteskipexceededlimit": "\/me @%%NAME%%, your song has exceeded the voteskip limit (%%LIMIT%% mehs).", "voteskipinvalidlimit": "\/me [@%%NAME%%] Invalid voteskip limit, please try again using a number to signify the number of mehs.", "voteskipsetlimit": "\/me [@%%NAME%%] Voteskip limit set to %%LIMIT%%.", - "activeusersintime": "\/me [@%%NAME%% There have been %%AMOUNT%% users chatting in the past %%TIME%% minutes.", + "activeusersintime": "\/me [@%%NAME%%] There have been %%AMOUNT%% users chatting in the past %%TIME%% minutes.", "maximumafktimeset": "\/me [@%%NAME%%] Maximum afk duration set to %%TIME%% minutes.", "afkstatusreset": "\/me [@%%NAME%%] Reset the afk status of @%%USERNAME%%.", "inactivefor": "\/me [@%%NAME%%] @%%USERNAME%% has been inactive for %%TIME%%.", @@ -203,5 +202,9 @@ "voteratio": "\/me [@%%NAME%%] @%%USERNAME%% ~ woots: %%WOOT%%, mehs: %%MEHS%%, ratio (w\/m): %%RATIO%%.", "website": "\/me Please visit our website: %%LINK%%", "youtube": "\/me [%%NAME%%] Subscribe to us on youtube: %%LINK%%", - "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%W\/%%GRABS%%G\/%%MEHS%%M." + "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%W\/%%GRABS%%G\/%%MEHS%%M.", + "thorNotClose": "\/me @%%NAME%%, you're not worthy of getting close to the hammer!", + "thorcd": "\/me @%%NAME%% you can try to lift the hammer in %%TIME%% minutes.", + "thorWorthy": "\/me @%%NAME%% you're worthy of the hammer :hammer:, congratulations!", + "thorNotWorthy": "\/me @%%NAME%% you're not worthy of the hammer." } \ No newline at end of file diff --git a/lang/es.json b/lang/es.json new file mode 100755 index 00000000..7993756e --- /dev/null +++ b/lang/es.json @@ -0,0 +1,210 @@ +{ + "cookies": [ + "te ha dado una galleta con chispas de chocolate!", + "te ha dado una galleta de avena hecha en casa!", + "te ha dado una galleta vieja y seca. Era la ultima que quedaba en la bolsa. Asqueroso.", + "te da una galleta de azucar. \u00bfQue, sin crema ni chispas? 0\/10 nunca la tocare.", + "te da una galleta de chocolate. Espera, son pasa. Que asco!", + "te da una galleta enorme. Si la tocas te da mas galletas. Raro.", + "te da una galleta de la fortuna. Se puede leer \"\u00bfPor que no estas trabajando en ningun proyecto?\"", + "te da una galleta de la fortuna. Se puede leer \"Dale a ese alguien especial un cumplido\"", + "te da una galleta de la fortuna. Se puede leer \"\u00a1Arriesgate!\"", + "te da una galleta de la fortuna. Se puede leer \"Ve afuera.\"", + "te da una galleta de la fortuna. Se puede leer \"\u00a1No te olvides de comer tus vegetales!\"", + "te da una galleta de la fortuna. Se puede leer \"\u00bfSiquiera haces pesas?\"", + "te da una galleta de la fortuna. Se puede leer \"m808 pls\"", + "te da una galleta de la fortuna. Se puede leer \"Si mueves tus caderas, tendras a todas las chicas.\"", + "te da una galleta de la fortuna. Se puede leer \"Te amo.\"", + "te da una Galleta Dorada. No la puedes comer porque esta hecha de oro. Rayos.", + "te da una galleta Oreo con un vaso de leche!", + "te da una galleta arcoiris hecha con amor :heart:", + "te da una galleta vieja que se dejo en la lluvia, esta mohosa.", + "te cocina galletas frescas, huelen muy bien." + ], + "balls": [ + "Los signos apuntan a que s\u00ed.", + "S\u00ed.", + "Respuesta vaga, vuelve a intentarlo.", + "Sin lugar a duda.", + "Mis fuentes dicen que no.", + "Como yo lo veo, si.", + "Puedes confiar en ello.", + "Concentrate y pregunta de nuevo.", + "Las perspectivas no son buenas.", + "Es decididamente as\u00ed.", + "Mejor no decirte ahora.", + "Muy dudoso.", + "Si - definitivamente.", + "Es cierto.", + "No lo puedo predecir ahora.", + "Lo m\u00e1s probable.", + "Pregunta de nuevo mas tarde.", + "Mi respuesta es no.", + "Buen pron\u00f3stico.", + "No cuentes con ello.", + "Si, en su debido tiempo.", + "Definitely not.", + "Tendras que esperar.", + "Tengo mis dudas.", + "Se ve normal.", + "\u00a1Se ve muy bien para mi!", + "\u00bfQui\u00e9n sabe?", + "\u00a1Pinta bien!", + "Probablemente.", + "\u00bfEstas bromeando?", + "No apuestes en ello.", + "Olvidalo..." + ], + "nodatafound": "No se ha encontrado datos anteriores.", + "currentlang": "\/me Idioma actualmente puesto en %%LANGUAGE%%", + "langerror": "\/me El lenguaje que seleccionaste no esta disponible. Por favor visita %%LINK%% para encontrar la lista de lenguajes disponibles.", + "langset": "\/me El lenguaje se ha cambiado a: %%LANGUAGE%%", + "retrievingdata": "Recuperando datos anteriormente guardados.", + "datarestored": "Datos anteriormente guardados fueron recuperados.", + "greyuser": "Solo guardaespaldas y mayores rangos pueden correr un bot.", + "bouncer": "El bot no puede mover personas cuando es ejecutado por un guardaespaldas.", + "online": "\/me %%BOTNAME%% v%%VERSION%% en linea!", + "welcome": "\/me Bienvenido %%NAME%%", + "welcomeback": "\/me Bienvenido de vuelta, %%NAME%%", + "songknown": "\/me @%%NAME%%, esta cancion esta en el historial de Dj.", + "notavailable": "\/me @%%NAME%%, la cancion que tocaste no estaba disponible.", + "timelimit": "\/me @%%NAME%%, tu cancion es mas larga que %%MAXLENGTH%% minutos, necesitas permisos para tocar canciones mas largas.", + "permissionownsong": "\/me :up: @%%NAME%% tiene permisos para tocar su propia produccion!", + "isblacklisted": "\/me Esta cancion esta en %%BLACKLIST%% lista negra! Saltando...", + "isopen": "\/me \u00a1La ruleta esta abierta! \u00a1Escribe !join para participar! (Un juego en el que un participante al azar es movido a una posicion cualquiera en la lista de espera).", + "winnerpicked": "\/me \u00a1Un ganador a sido escogido! @%%NAME%% movido a %%POSITION%%", + "ball": "\/me %%NAME%% su pregunta fue: \"%%QUESTION%%\" y la respues de %%BOTNAME%% es: \"%%RESPONSE%%\"", + "notghosting": "[%%NAME1%%] %%NAME2%% no esta ghosteando.", + "ghosting": "[%%NAME1%%] %%NAME2%% o esta ghosteando o no esta aqui.", + "alreadyadding": "\/me El usuario esta siendo a\u00f1adido! Cambiando la posicion deseada a %%POSITION%%.", + "adding": "\/me @%%NAME%% agregado a la cola. Cola actual: %%POSITION%%.", + "usernotfound": "\/me Usuario no encontrado.", + "notdisconnected": "\/me @%%NAME%% no se desconecto mientras estuve aqui.", + "noposition": "\/me No se conoce la ultima posicion. La lista de espera necesita actualizarte por lo menos una vez para registrar la ultima posicion del usuario.", + "toolongago": "\/me la ultima desconexion de @%%NAME%% fue hace mucho tiempo: %%TIME%%.", + "valid": "\/me @%%NAME%% se desconecto hace %%TIME%% y deberia estar en la posicion %%POSITION%%.", + "warning1": "\/me @%%NAME%%, haz estado afk por %%TIME%%, por favor responde en 2 minutos o seras removido.", + "warning2": "\/me @%%NAME%%, seras removido dentro de poco por estar afk si no respondes.", + "afkremove": "\/me @%%NAME%%, haz sido removido por estar afk por %%TIME%%. Estabas en la posicion %%POSITION%%. Chatea por lo menos una vez cada %%MAXIMUMAFK%% minutos si quieres tocar una cancion.", + "caps": "\/me @%%NAME%%, no chatees en mayusculas por favor.", + "askskip": "\/me @%%NAME%%, no pidas skips.", + "spam": "\/me @%%NAME%%, por favor no spamees.", + "roomadvertising": "\/me @%%NAME%%, no postees links hacia otras salas por favor.", + "adfly": "\/me @%%NAME%%, por favor cambia tu programa de \"autogenial\". Te sugerimos PlugCubed: http:\/\/plugcubed.net\/", + "validgiftags": "/me [@%%NAME%%] [Tags: %%TAGS%%] http://i.giphy.com/%%ID%%.gif", + "invalidgiftags": "/me [@%%NAME%%] [Etiquetas: %%TAGS%%] Etiquetas invalidas, por favor prueba algo diferente.", + "validgifrandom": "\/me [@%%NAME%%] [Random GIF] http:\/\/i.giphy.com\/%%ID%%.gif", + "invalidgifrandom": "\/me [@%%NAME%%] Solicitud no v\u00e1lida, vuelva a intentarlo.", + "invalidtime": "\/me [@%%NAME%%] Tiempo especificado invalido.", + "nouserspecified": "\/me [@%%NAME%%] Usuario no especificado.", + "invaliduserspecified": "\/me [@%%NAME%%] Usuario especificado invalido.", + "nolistspecified": "\/me [@%%NAME%%] Ninguna lista especificada.", + "invalidlistspecified": "\/me [@%%NAME%%] Lista especificada invalida.", + "novaliduserspecified": "\/me [@%%NAME%%] Ningun usuario valido especificado.", + "nolimitspecified": "\/me [@%%NAME%%] Ningun limite especificado.", + "invalidlimitspecified": "\/me [@%%NAME%%] Limite invalido.", + "invalidpositionspecified": "\/me [@%%NAME%%] Posicion especificada invalida.", + "whois": "\/me [%%NAME1%%] Usuario: %%NAME2%%, ID: %%ID%%, Rango: %%RANK%%, Entro: %%JOINED%%, Nivel: %%LEVEL%%, Lenguaje: %%LANGUAGE%%, Avatar: %%AVATAR%%, Perfil: %%PROFILE%%", + "toggleon": "\/me [@%%NAME%%] %%FUNCTION%% activado.", + "toggleoff": "\/me [@%%NAME%%] %%FUNCTION%% desactivado.", + "cmddeletion": "eliminaci\u00f3n de comandos", + "afkremoval": "Removedor de AFK", + "afksremoved": "AFKs removidos", + "afklimit": "Limite AFK", + "autodisable": "Autodesactivar", + "autoskip": "Autoskip", + "newblacklisted": "\/me [@%%NAME%%] Esta cancion esta en %%BLACKLIST%% lista negra! [ %%AUTHOR%% - %%TITLE%% - %%MID%% ]", + "blinfo": "[@%%NAME%%] Informacion de la lista negra - autor: %%AUTHOR%%, titulo: %%TITLE%%, Id: %%SONGID%%", + "blacklist": "lista negra", + "cycleguard": "cycleguard", + "timeguard": "timeguard", + "chatfilter": "filtro de chat", + "historyskip": "historyskip", + "lockdown": "lockdown", + "lockguard": "lockguard", + "usercommands": "usercommands", + "motd": "MotD", + "welcomemsg": "mensaje de bienvenida", + "songstats": "estad\u00edsticas de canciones", + "etarestriction": "restriccion eta", + "voteskip": "voteskip", + "voteskiplimit": "\/me [@%%NAME%%] El limite de voteskip esta actualmente en %%LIMIT%% aburridos.", + "voteskipexceededlimit": "\/me @%%NAME%%, tu cancion excede el limite de voteskip (%%LIMIT%% aburridos).", + "voteskipinvalidlimit": "\/me [@%%NAME%%] Limite de voteskip invalido, prueba de nuevo usando un numero de referencia para el numero de aburridos.", + "voteskipsetlimit": "\/me [@%%NAME%%] Limite del voteskip puesto en %%LIMIT%%.", + "activeusersintime": "\/me [@%%NAME%%] Han habido %%AMOUNT%%usuarios chateando en los ultimos %%TIME%% minutos.", + "maximumafktimeset": "\/me [@%%NAME%%] Duracion maxima de afk puesta en %%TIME%% minutos.", + "afkstatusreset": "\/me [@%%NAME%%] Estado afk reseteado @%%USERNAME%%.", + "inactivefor": "\/me [@%%NAME%%] @%%USERNAME%% ha estado inactivo por %%TIME%%.", + "inactivelonger": "\/me [@%%NAME%%] @%%USERNAME%% ha estado inactivo mas tiempo de lo que %%BOTNAME%% ha estado online.", + "autowoot": "\/me Te recomendamos PlugCubed para el autogenial: http:\/\/plugcubed.net\/", + "brandambassador": "\/me Un Embajador de la Marca es la voz de los usuarios de plug.dj. Ellos promueven eventos, unen a la comunidad y comparten la pagina por todo el mundo. Si necesitas mas informacion: https:\/\/plug.dj\/ba", + "bouncerplusrank": "\/me [@%%NAME%%] Necesitas ser manager o mas para habilitar Bouncer+.", + "chatcleared": "\/me [@%%NAME%%] Limpio el chat.", + "deletechat": "\/me [@%%NAME%%] Limpio el chat de %%USERNAME%%.", + "commandslink": "\/me %%BOTNAME%% comandos: %%LINK%%", + "eatcookie": "\/me me como una galleta.", + "nousercookie": "\/me no veo a %%NAME%% en la sala y me como la galleta.", + "selfcookie": "me @%%NAME%%, eres un poco codicioso, no? Dandote galletas a ti mismo, bah. \u00a1Comparte con otras personas!", + "cookie": "\/me @%%NAMETO%%, %%NAMEFROM%% %%COOKIE%%", + "cycleguardtime": "\/me [@%%NAME%%] El cycleguard esta puesto en %%TIME%% minuto(s).", + "dclookuprank": "\/me [@%%NAME%%] Solo guardaespaldas y para arriba puedes buscar a otros.", + "emojilist": "\/me Lista de Emojis: %%LINK%%", + "notinwaitlist": "\/me @%%NAME%%, no estas en la lista de espera.", + "youarenext": "\/me @%%NAME%%, vas a estar de Dj despues de esta cancion.", + "youaredj": "\/me @%%NAME%%, estas de Dj actualmente.", + "eta": "\/me @%%NAME%%, eres la posicion %%POSITION%% en la lista de espera y llegaras a ser Dj en aproximadamente %%TIME%%.", + "facebook": "\/me Danos like en facebook: %%LINK%%", + "starterhelp": "\/me Esta imagen te ayudara a empezar en plug.dj: %%LINK%%", + "roulettejoin": "@%%NAME%% entro en la ruleta! (!leave si lo lamentas)", + "jointime": "\/me [@%%NAMEFROM%%] @%%USERNAME%% ha estado en la sala por %%TIME%%.", + "kickrank": "\/me [@%%NAME%%] no puedes kickear usuarios con rangos iguales o mayores a los tuyos.", + "kick": "\/me [@%%NAME%%], @%%USERNAME%% seras kickeado de la comunidad por %%TIME%% minutos.", + "kill": "\/me Apagando.", + "logout": "\/me [@%%NAME%%] Cerrando sesion %%BOTNAME%%", + "rouletteleave": "\/me @%%NAME%% salio de la ruleta!", + "songlink": "\/me [@%%NAME%%] Link de la cancion actual: %%LINK%%", + "usedlockskip": "\/me [%%NAME%% uso lockskip]", + "usedskip": "\/me [%%NAME%% uso skip]", + "skippos": "\/me [@%%NAME%%] Djs ahora seran movidos a la posicion %%POSITION%% cuando skip.", + "lockguardtime": "\/me [@%%NAME%%] El lockguard esta puesto en %%TIME%% minuto(s).", + "maxlengthtime": "\/me [@%%NAME%%] La duracion maxima de una cancion esta en %%TIME%% minutos.", + "motdset": "\/me MotD puesto a: %%MSG%%", + "motdintervalset": "\/me Intervalo del MotD puesto en %%INTERVAL%%.", + "currentbotname": "\/me El nombre actual del bot es: %%BOTNAME%%", + "botnameset": "\/me El nombre del bot se ha cambiado a: %%BOTNAME%%", + "addbotwaitlist": "\/me @%%NAME%%, no me trates de agregar a la lista de espera, por favor.", + "move": "\/me [%%NAME%% uso mover]", + "mutednotime": "\/me [@%%NAME%%] Muteo @%%USERNAME%%.", + "mutedmaxtime": "\/me [@%%NAME%%] Tu solo puedes silenciar por un maximo de %%TIME%% minutos.", + "mutedtime": "\/me [@%%NAME%%] Silencio @%%USERNAME%% por %%TIME%% minutos.", + "unmuted": "\/me [@%%NAME%%] desmuteo @%%USERNAME%%.", + "muterank": "\/me [@%%NAME%%]Tu no puedes mutear personas con el mismo rango o mayor que el tuyo.", + "oplist": "\/me Lista OP: %%LINK%%", + "pong": "\/me Pong!", + "reload": "\/me Vuelvo enseguida.", + "removenotinwl": "\/me [@%%NAME%%] Usuario especificado @%%USERNAME%% no esta en la lista de espera.", + "roomrules": "\/me Por favor lee las reglas de la sala aqui: %%LINK%%", + "sessionstats": "\/me [@%%NAME%%] Geniales totales: %%WOOTS%%, aburridos totales: %%MEHS%%, agarradas: %%GRABS%%.", + "forceskip": "\/me [%%NAME%% uso forceskip]", + "madeby": "\/me Este bot fue hecho por %%NAME%%.", + "activefor": "He estado activo por %%TIME%%.", + "swapinvalid": "\/me [@%%NAME%%] Usuario invalido especificado. (\u00a1Sin nombres con espacios!)", + "swapwlonly": "\/me [@%%NAME%%] \u00a1Por favor solo cambia usuarios que estan en la lista de espera!", + "swapping": "\/me Cambiando %%NAME1%% con %%NAME2%%.", + "genres": "\/me Encuentra los generos que se tocan en esta sala: %%LINK%%", + "notbanned": "\/me [@%%NAME%%] El usuario no fue baneado.", + "unmutedeveryone": "\/me [@%%NAME%%] Todos fueron desmuteados.", + "unmuteeveryonerank": "\/me [@%%NAME%%] Solo managers y mas alto pueden desmutear a todos de una vez.", + "notmuted": "\/me [@%%NAME%%] ese usuario no estaba silenciado.", + "unmuterank": "\/me [@%%NAME%%] No puedes desmutear personas con el mismo o mayor rango que tu.", + "commandscd": "\/me [@%%NAME%%] El tiempo de reutilizaci\u00f3n de los comandos para los usuarios esta puesto ahora en %%TIME%% segundos.", + "voteratio": "\/me [@%%NAME%%] @%%USERNAME%% ~ geniales: %%WOOT%%, aburridos: %%MEHS%%, ratio (g\/a): %%RATIO%%.", + "website": "\/me Por favor visita nuestra pagina web: %%LINK%%", + "youtube": "\/me [%%NAME%%] Suscribete a nosotros en youtube: %%LINK%%", + "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%W\/%%GRABS%%G\/%%MEHS%%M.", + "thorNotClose": "\/me @%%NAME%%, you're not worthy of getting close to the hammer!", + "thorcd": "\/me @%%NAME%% you can try to lift the hammer in %%TIME%% minutes.", + "thorWorthy": "\/me @%%NAME%% you're worthy of the hammer :hammer:, congratulations!", + "thorNotWorthy": "\/me @%%NAME%% you're not worthy of the hammer." +} diff --git a/lang/fr.json b/lang/fr.json old mode 100644 new mode 100755 index a39aae61..f4da20a2 --- a/lang/fr.json +++ b/lang/fr.json @@ -1,60 +1,59 @@ { "cookies": [ - "has given you a chocolate chip cookie!", - "has given you a soft homemade oatmeal cookie!", - "has given you a plain, dry, old cookie. It was the last one in the bag. Gross.", - "gives you a sugar cookie. What, no frosting and sprinkles? 0\/10 would not touch.", - "gives you a chocolate chip cookie. Oh wait, those are raisins. Bleck!", - "gives you an enormous cookie. Poking it gives you more cookies. Weird.", - "gives you a fortune cookie. It reads \"Why aren't you working on any projects?\"", - "gives you a fortune cookie. It reads \"Give that special someone a compliment\"", - "gives you a fortune cookie. It reads \"Take a risk!\"", - "gives you a fortune cookie. It reads \"Go outside.\"", - "gives you a fortune cookie. It reads \"Don't forget to eat your veggies!\"", + "vous a donn\u00e9 un cookie aux p\u00e9pites de chocolat !", + "vous a donn\u00e9 un cookie aux flocons d'avoine !", + "vous a donn\u00e9 un vieux cookie sec et rassis. C'\u00e9tait le dernier du paquet. D\u00e9go\u00fbtant !", + "vous donne un biscuit au sucre. Quoi, pas de gla\u00e7age ni vermicelles ? 0\/10 ne toucherait pas.", + "vous donne un cookie aux p\u00e9pites de chocolat. Oh attend, ce sont des raisins secs ! Berk !", + "vous donne une \u00e9norme cookie. Appuyer dessus vous donne plus de cookies. Bizarre.", + "vous donne un biscuit chinois. Il est \u00e9crit \"Pourquoi ne travaillez-vous pas sur aucun projet ?\"", + "vous donnne un biscuit chinois. Il est \u00e9crit \"Donnez un compliment \u00e0 cet \u00eatre qui vous est cher\"", + "vous donne un biscuit chinois. Il est \u00e9crit \"Prenez des risques !\"", + "vous donne un biscuit chinois. Il est \u00e9crit \"Allez dehors !\"", + "vous donne un biscuit chinois. Il est \u00e9crit \"N'oubliez pas de manger vos l\u00e9gumes !\"", "gives you a fortune cookie. It reads \"Do you even lift?\"", "gives you a fortune cookie. It reads \"m808 pls\"", "gives you a fortune cookie. It reads \"If you move your hips, you'll get all the ladies.\"", - "gives you a fortune cookie. It reads \"I love you.\"", - "gives you a Golden Cookie. You can't eat it because it is made of gold. Dammit.", - "gives you an Oreo cookie with a glass of milk!", - "gives you a rainbow cookie made with love :heart:", - "gives you an old cookie that was left out in the rain, it's moldy.", - "bakes you fresh cookies, it smells amazing." + "vous donne un biscuit chinois. Il est \u00e9crit \"Je vous aime.\"", + "vous donne un Cookie Dor\u00e9. Vous ne pouvez pas le manger puisque il est fait en or. Merde.", + "vous donne un Oreo avec une verre de lait !", + "vous donne un cookie arc-en-ciel fait d'amour :heart:", + "vous donne un cookie qui a pris la pluie, il est moisi.", + "pr\u00e9pare de nouveaux cookies, \u00e7a sent tellement bon !" ], "balls": [ - "Signs point to yes.", - "Yes.", - "Reply hazy, try again.", - "Without a doubt.", - "My sources say no.", - "As I see it, yes.", - "You may rely on it.", - "Concentrate and ask again.", - "Outlook not so good.", - "It is decidedly so.", - "Better not tell you now.", - "Very doubtful.", - "Yes - definitely.", - "It is certain.", - "Cannot predict now.", - "Most likely.", - "Ask again later.", - "My reply is no.", - "Outlook good.", - "Don't count on it.", - "Yes, in due time.", - "My sources say no.", + "Il semble que oui.", + "Oui.", + "C'est incertain, demande encore.", + "Sans aucun doute.", + "Mes sources disent que non.", + "Tel que je le vois, oui.", + "Vous pouvez compter l\u00e0-dessus.", + "Concentrez-vous et demandez encore !", + "Les perspectives ne sont pas si bonnes.", + "C'est d\u00e9cid\u00e9 tel quel.", + "Je ne devrais pas vous le dire maintenant.", + "J'ai des gros doutes.", + "Oui - d\u00e9finitivement.", + "C'est certain.", + "Je ne peux pas le pr\u00e9dire maintenant.", + "Probablement.", + "Redemande plus tard.", + "Ma r\u00e9ponse est non.", + "Les perspectives sont bonnes.", + "Ne comptez pas dessus.", + "Oui, en temps voulu.", "Definitely not.", - "You will have to wait.", - "I have my doubts.", - "Outlook so so.", - "Looks good to me!", - "Who knows?", - "Looking good!", - "Probably.", - "Are you kidding?", - "Don't bet on it.", - "Forget about it." + "D\u00e9finitivement pas.", + "Vous devrez attendre.", + "J'en doute.", + "Couci-cou\u00e7a.", + "\u00c7a me para\u00eet bon !", + "Qui sait ?", + "Semble bien !", + "Possiblement.", + "Vous plaisantez ?", + "Ne pariez pas dessus." ], "nodatafound": "Aucune donn\u00e9e trouv\u00e9e.", "currentlang": "\/me La langue actuellement utilis\u00e9e est : %%LANGUAGE%%", @@ -72,10 +71,10 @@ "timelimit": "\/me @%%NAME%%, votre musique est plus longue que %%MAXLENGTH%% minutes, vous avez besoin de la permission pour jouer une musique plus longue.", "permissionownsong": "\/me :up: @%%NAME%% a la permission de jouer sa propre cr\u00e9ation !", "isblacklisted": "\/me Cette musique est sur la liste noire %%BLACKLIST%% ! Je passe...", - "isopen": "\/me La roulette est maintenant ouverte ! Tapez !join pour participer !", + "isopen": "\/me La roulette est maintenant ouverte ! Tapez !join pour participer ! (Un jeu o\u00f9 une participant au hasard est d\u00e9plac\u00e9 \u00e0 une position al\u00e9atoire dans la queue)", "winnerpicked": "\/me Un gagnant a \u00e9t\u00e9 trouv\u00e9 ! @%%NAME%% \u00e0 la position %%POSITION%%.", "ball": "\/me %%NAME%% a pos\u00e9 la question: \"%%QUESTION%%\" et la r\u00e9ponse de %%BOTNAME%% est: \"%%RESPONSE%%\"", - "notghosting": "[%%NAME1%%] %%NAME2%% n'est pas en fantome.", + "notghosting": "[%%NAME1%%] %%NAME2%% n'est pas en fant\u00f4me.", "ghosting": "[%%NAME1%%] %%NAME2%% is either ghosting or not here.", "alreadyadding": "\/me L'utilisateur est d\u00e9j\u00e0 en ajout ! Changement de la position d\u00e9sir\u00e9e \u00e0 %%POSITION%%.", "adding": "\/me Ajout de @%%NAME%% \u00e0 la file d'attente. Queue actuelle : %%POSITION%%.", @@ -92,9 +91,9 @@ "spam": "\/me @%%NAME%%, merci de ne pas spammer.", "roomadvertising": "\/me @%%NAME%%, ne postez pas de liens menant vers d'autres salles.", "adfly": "\/me @%%NAME%%, merci de changer votre programme d'Autowoot. Nous vous sugg\u00e9rons PlugCubed : http:\/\/plugcubed.net\/", - "validgiftags": "\/me [@%%NAME%%] http:\/\/media.giphy.com\/media\/%%ID%%\/giphy.gif [Tags : %%TAGS%%]", - "invalidgiftags": "\/me [@%%NAME%%] Tags invalides, essayez-en d'autres. [Tags : %%TAGS%%]", - "validgifrandom": "\/me [@%%NAME%%] http:\/\/media.giphy.com\/media\/%%ID%%\/giphy.gif [GIF Al\u00e9atoire]", + "validgiftags": "/me [@%%NAME%%] [Tags: %%TAGS%%] http://i.giphy.com/%%ID%%.gif", + "invalidgiftags": "/me [@%%NAME%%] [Tags : %%TAGS%%] Tags invalides, essayez-en d'autres.", + "validgifrandom": "/me [@%%NAME%%] [GIF Aléatoire] http://i.giphy.com/%%ID%%.gif", "invalidgifrandom": "\/me [@%%NAME%%] Requ\u00eate invalide, essayez encore.", "invalidtime": "\/me [@%%NAME%%] Temps sp\u00e9cifi\u00e9 invalide.", "nouserspecified": "\/me [@%%NAME%%] Aucun utilisateur sp\u00e9cifi\u00e9.", @@ -105,7 +104,7 @@ "nolimitspecified": "\/me [@%%NAME%%] Aucune limite sp\u00e9cifi\u00e9e.", "invalidlimitspecified": "\/me [@%%NAME%%] Limite invalide.", "invalidpositionspecified": "\/me [@%%NAME%%] Position invalide sp\u00e9cifi\u00e9e.", - "whois": "\/me [%%NAME1%%] Nom : %%NAME2%%, ID : %%ID%%, Rang : %%RANK%%, Inscrit le : %%JOINED%%, Niveau : %%LEVEL%%, Langue : %%LANGUAGE%%, Avatar : %%AVATAR%%, Statut : %%STATUS%%%%PROFILE%%", + "whois": "\/me [%%NAME1%%] Nom: %%NAME2%%, ID: %%ID%%, Rang: %%RANK%%, Rejoint le: %%JOINED%%, Level: %%LEVEL%%, Langue: %%LANGUAGE%%, Avatar: %%AVATAR%%, Profil: %%PROFILE%%", "toggleon": "\/me [@%%NAME%%] %%FUNCTION%% activ\u00e9e.", "toggleoff": "\/me [@%%NAME%%] %%FUNCTION%% d\u00e9sactiv\u00e9e.", "cmddeletion": "Suppression de commande", @@ -133,7 +132,7 @@ "voteskipexceededlimit": "\/me @%%NAME%%, votre chanson a d\u00e9pass\u00e9 la limite de mehs requis pour passer (%%LIMIT%% mehs).", "voteskipinvalidlimit": "\/me [@%%NAME%%] Limite invalide, s'il vous pla\u00eet essayez encore en pr\u00e9cisant un nombre pour la limite de mehs.", "voteskipsetlimit": "\/me [@%%NAME%%] Limite pour passer plac\u00e9e \u00e0 %%LIMIT%%.", - "activeusersintime": "\/me [@%%NAME%%] %%AMOUNT%% utilisateurs ont parl\u00e9 dans les derni\u00e8res %%TIME%% minutes.", + "activeusersintime": "\/me [@%%NAME%%] Il y a eu %%AMOUNT%% utilisateurs qui ont parl\u00e9 dans les derni\u00e8res %%TIME%% minutes.", "maximumafktimeset": "\/me [@%%NAME%%] Dur\u00e9e maximum d'AFK r\u00e9gl\u00e9e \u00e0 %%TIME%% minutes.", "afkstatusreset": "\/me [@%%NAME%%] R\u00e9initialisation du statut AFK de @%%USERNAME%%.", "inactivefor": "\/me [@%%NAME%%] @%%USERNAME%% a \u00e9t\u00e9 inactif pendant %%TIME%%.", @@ -154,10 +153,10 @@ "notinwaitlist": "\/me @%%NAME%%, vous n'\u00eates pas dans la file d'attente.", "youarenext": "\/me @%%NAME%%, you are DJing after this song.", "youaredj": "\/me @%%NAME%%, you are currently DJing.", - "eta": "\/me @%%NAME%%, vous atteignerez les platines dans \u00e0 peu pr\u00e8s %%TIME%%.", + "eta": "\/me @%%NAME%%, vous \u00eates \u00e0 la position %%POSITION%% dans la queue et vous atteignerez les platines dans \u00e0 peu pr\u00e8s %%TIME%%.", "facebook": "\/me Suivez-nous sur Facebook : %%LINK%%", "starterhelp": "\/me Cette image vous aidera \u00e0 d\u00e9buter sur plug : %%LINK%%", - "roulettejoin": "\/me @%%NAME%% a rejoint la roulette ! (!leave si vous le regrettez.)", + "roulettejoin": "\/me @%%NAME%% a rejoint la roulette ! (!leave si vous le regrettez)", "jointime": "\/me [@%%NAMEFROM%%] @%%USERNAME%% est dans la salle depuis %%TIME%%.", "kickrank": "\/me [@%%NAME%%] Vous ne pouvez pas kicker un utilisateur avec un rang \u00e9gal ou sup\u00e9rieur au v\u00f4tre !", "kick": "\/me [@%%NAME%%], @%%USERNAME%% vous allez vous faire kicker de la communaut\u00e9 pendant %%TIME%% minutes.", @@ -165,7 +164,7 @@ "logout": "\/me [@%%NAME%%] D\u00e9connecte %%BOTNAME%%.", "rouletteleave": "\/me @%%NAME%% a quitt\u00e9 la roulette !", "songlink": "\/me [@%%NAME%%] Lien vers la musique actuelle : %%LINK%%", - "usedlockskip": "\/me [%%NAME%% a utilis\u00e9 lockskip.]", + "usedlockskip": "\/me [%%NAME%% a utilis\u00e9 lockskip]", "usedskip": "\/me [%%NAME%% used skip]", "skippos": "\/me [@%%NAME%%] DJs will now be moved to position %%POSITION%% when skipped.", "lockguardtime": "\/me [@%%NAME%%] Le lockguard est maintenant param\u00e9tr\u00e9 pour %%TIME%% minute(s).", @@ -175,7 +174,7 @@ "currentbotname": "\/me Bot name currently set to: %%BOTNAME%%", "botnameset": "\/me Bot name now set to: %%BOTNAME%%", "addbotwaitlist": "\/me @%%NAME%%, n'essaye pas de m'ajouter \u00e0 la liste d'attente, merci.", - "move": "\/me [%%NAME%% a utilis\u00e9 move.]", + "move": "\/me [%%NAME%% a utilis\u00e9 move]", "mutednotime": "\/me [@%%NAME%%] A rendu muet @%%USERNAME%%.", "mutedmaxtime": "\/me [@%%NAME%%] Vous ne pouvez rendre muet qu'au maximum %%TIME%% minutes.", "mutedtime": "\/me [@%%NAME%%] A rendu muet @%%USERNAME%% pendant %%TIME%% minutes.", @@ -203,5 +202,9 @@ "voteratio": "\/me [@%%NAME%%] @%%USERNAME%% ~ woots : %%WOOT%%, mehs : %%MEHS%%, ratio (w\/m) : %%RATIO%%.", "website": "\/me Visitez notre site Internet : %%LINK%%", "youtube": "\/me [%%NAME%%] Abonnez-vous \u00e0 notre cha\u00eene Youtube : %%LINK%%", - "songstatistics": "\/me %%ARTIST%% - %%TITLE%% : %%WOOTS%%W\/%%GRABS%%A\/%%MEHS%%M." -} \ No newline at end of file + "songstatistics": "\/me %%ARTIST%% - %%TITLE%% : %%WOOTS%%W\/%%GRABS%%A\/%%MEHS%%M.", + "thorNotClose": "\/me @%%NAME%%, you're not worthy of getting close to the hammer!", + "thorcd": "\/me @%%NAME%% you can try to lift the hammer in %%TIME%% minutes.", + "thorWorthy": "\/me @%%NAME%% you're worthy of the hammer :hammer:, congratulations!", + "thorNotWorthy": "\/me @%%NAME%% you're not worthy of the hammer." +} diff --git a/lang/langIndex.json b/lang/langIndex.json index 91985061..b596f2fc 100644 --- a/lang/langIndex.json +++ b/lang/langIndex.json @@ -1,10 +1,16 @@ { - "english": "https://rawgit.com/Yemasthui/basicBot/master/lang/en.json", - "portuguese": "https://rawgit.com/Yemasthui/basicBot/master/lang/pt.json", - "french": "https://rawgit.com/Yemasthui/basicBot/master/lang/fr.json", - "turkish": "https://rawgit.com/Yemasthui/basicBot/master/lang/tr.json", - "serbian": "https://rawgit.com/Yemasthui/basicBot/master/lang/sr.json", - "chinese": "https://rawgit.com/Yemasthui/basicBot/master/lang/zh.json", - "dutch": "https://rawgit.com/Yemasthui/basicBot/master/lang/nl.json", - "latvian": "https://rawgit.com/Yemasthui/basicBot/master/lang/lv.json" -} \ No newline at end of file + "chinese": "https://raw.githack.com/basicBot/source/master/lang/zh-TW.json", + "czech": "https://raw.githack.com/basicBot/source/master/lang/cs.json", + "dutch": "https://raw.githack.com/basicBot/source/master/lang/nl.json", + "english": "https://raw.githack.com/basicBot/source/master/lang/en.json", + "french": "https://raw.githack.com/basicBot/source/master/lang/fr.json", + "german": "https://raw.githack.com/basicBot/source/master/lang/de.json", + "latvian": "https://raw.githack.com/basicBot/source/master/lang/lv.json", + "lithuanian": "https://raw.githack.com/basicBot/source/master/lang/lt.json", + "malay": "https://raw.githack.com/basicBot/source/master/lang/ms.json", + "polish": "https://raw.githack.com/basicBot/source/master/lang/pl.json", + "portuguese": "https://raw.githack.com/basicBot/source/master/lang/pt-BR.json", + "serbian": "https://raw.githack.com/basicBot/source/master/lang/sr.json", + "spanish": "https://raw.githack.com/basicBot/source/master/lang/es.json", + "turkish": "https://raw.githack.com/basicBot/source/master/lang/tr.json" +} diff --git a/lang/lt.json b/lang/lt.json new file mode 100755 index 00000000..8dcad0a7 --- /dev/null +++ b/lang/lt.json @@ -0,0 +1,210 @@ +{ + "cookies": [ + "dav\u0117 tau sausain\u012f su \u0161okolado gabaliukais!", + "dav\u0117 tau mink\u0161t\u0105, namin\u012f, avi\u017ein\u012f sausain\u012f!", + "dav\u0117 tau paprast\u0105, saus\u0105, sen\u0105 sausain\u012f. Jis buvo paskutinis pakelyje. \u0160lyk\u0161tu.", + "dav\u0117 tau cukrin\u012f sausain\u012f. K\u0105, joki\u0173 pabarstuk\u0173? 0\/10 nelies\u010diau.", + "dav\u0117 tau sausin\u012f su \u0161okolado gabaliukais. Oj, \u010dia razinos. Fu!", + "dav\u0117 tau mil\u017eini\u0161k\u0105 sausain\u012f. Kai j\u012f paspaudi gauni daugiau sausaini\u0173. Keista.", + "dav\u0117 tau laim\u0117s sausainuk\u0105. Jame para\u0161yta \"Kod\u0117l nedirbi prie joki\u0173 projekt\u0173?\"", + "dav\u0117 tau laim\u0117s sausainuk\u0105. Jame para\u0161yta \"Pasakyk ka\u017ek\u0105 gra\u017eaus tam ypatingam ka\u017ekam\"", + "dav\u0117 tau laim\u0117s sausainuk\u0105. Jame para\u0161yta \"Surizikuok!\"", + "dav\u0117 tau laim\u0117s sausainuk\u0105. Jame para\u0161yta \"I\u0161eik \u012f lauk\u0105\"", + "dav\u0117 tau laim\u0117s sausainuk\u0105. Jame para\u0161yta \"Nepamir\u0161k valgyti dar\u017eovi\u0173!\"", + "dav\u0117 tau laim\u0117s sausainuk\u0105. Jame para\u0161yta \"Ar tu bent stumi?\"", + "dav\u0117 tau laim\u0117s sausainuk\u0105. Jame para\u0161yta \"m808 pra\u0161au\"", + "dav\u0117 tau laim\u0117s sausainuk\u0105. Jame para\u0161yta \"Jeigu judinsi klubus, visos panel\u0117s bus tavo.\"", + "dav\u0117 tau laim\u0117s sausainuk\u0105. Jame para\u0161yta \"A\u0161 tave myliu.\"", + "dav\u0117 tau Auksin\u012f Sausain\u012f. Tu jo negali valgyti, nes jis pagamintas i\u0161 aukso. Velnias!", + "dav\u0117 tau Oreo sausain\u012f su stikline pieno!", + "dav\u0117 tau sausain\u012f pagamint\u0105 su meile :heart:", + "dav\u0117 tau sen\u0105 sausain\u012f, kuris buvo paliktas lietuje, jis apipelyj\u0119s.", + "I\u0161kep\u0117 tau \u0161vie\u017ei\u0173 sausaini\u0173. Kvepia nuostabiai" + ], + "balls": [ + "\u017denklai sako taip.", + "Taip.", + "Atsakymas miglotas, bandyk dar kart\u0105.", + "Be abejoni\u0173.", + "Mano \u0161altiniai sako ne.", + "Kaip matau, taip.", + "Gali tuo b\u016bti u\u017etikrintas", + "Susikaupk ir klausk dar kart\u0105", + "Atsakymas ne tavo naudai.", + "Taip jau nuspr\u0119sta.", + "Dabar geriau to nesakysiu.", + "Labai abejotina.", + "Taip - tikrai.", + "Be abejoni\u0173.", + "Dabar nusp\u0117ti negaliu.", + "Grei\u010diausiai taip.", + "Paklausk v\u0117liau.", + "Mano atsakymas ne.", + "Atsakymas tavo naudai.", + "Nesitik\u0117k to.", + "Taip, artimiausiu metu.", + "Tikrai ne.", + "Tu tur\u0117si palaukti.", + "Turiu abejoni\u0173.", + "Perspektyvos taip taip.", + "Man atrodo gerai!", + "Kas \u017eino?", + "Gerai atrodai!", + "Turb\u016bt.", + "Ar tu juokauji?", + "Don't bet on it.", + "Pamir\u0161k apie tai." + ], + "nodatafound": "Nerasta jokia prie\u0161 tai i\u0161saugota informacija.", + "currentlang": "\/me Kalba nustatyta \u012f %%LANGUAGE%%", + "langerror": "\/me Kalba, kuri\u0105 pasirinkai, n\u0117ra galima. Apsilankyk %%LINK%% ir surasi visas galimas kalbas.", + "langset": "\/me Kalba s\u0117kmingai nustatyta \u012f %%LANGUAGE%%", + "retrievingdata": "Atgaunama prie\u0161 tai i\u0161saugota informacija.", + "datarestored": "Prie\u0161 tai i\u0161saugota informacija s\u0117kmingai gauta.", + "greyuser": "Tik bouncers ir auk\u0161tesnio rango vartotjai gali paleisti bot\u0105.", + "bouncer": "Botas negali perkelti \u017emoni\u0173, kai jis nustatytas bouncer rangu.", + "online": "\/me %%BOTNAME%% v%%VERSION%% \u012fjungtas.", + "welcome": "\/me Labas %%NAME%%", + "welcomeback": "\/me D\u017eiugu, jog gr\u012f\u017eai %%NAME%%.", + "songknown": "\/me @%%NAME%%, \u0161\u012f dain\u0105 yra DJ istorijoje.", + "notavailable": "\/me @%%NAME%%, daina kuri\u0105 bandei paleisti n\u0117ra prieinama.", + "timelimit": "\/me @%%NAME%%, tavo daina yra ilgesn\u0117 negu %%MAXLENGTH%% minut\u0117s, tau reikia privilegij\u0173 kad gal\u0117tum leisti ilgesnes dainas.", + "permissionownsong": "\/me :up: @%%NAME%% turi privilegijas leisti savo k\u016brinius!", + "isblacklisted": "\/me \u0160i daina yra %%BLACKLIST%% blacklist'e! Perjungiama...", + "isopen": "\/me Rulet\u0117 prasid\u0117jo! Ra\u0161yk !join kad dalyvautum! (Rulet\u0117 tai: ka\u017ekuris i\u0161 dalyviu parenkamas atsitiktiniu b\u016bdu ir nukeliamas \u012f 1 waitlist'o viet\u0105)", + "winnerpicked": "\/me Laim\u0117tojas parinktas! @%%NAME%% perkeltas \u012f pozicij\u0105 %%POSITION%%", + "ball": "\/me %%NAME%% klausimas buvo: \"%%QUESTION%%\" ir %%BOTNAME%% atsakymas yra: \"%%RESPONSE%%\"", + "notghosting": "[%%NAME1%%] %%NAME2%% n\u0117ra \u0161e\u0161\u0117liuose.", + "ghosting": "[%%NAME1%%] %%NAME2%% yra \u0161e\u0161\u0117liuose, arba tiesiog jo \u010dia n\u0117ra.", + "alreadyadding": "\/me Narys jau yra pridedamas! Pakeista pozicija \u012f %%POSITION%%", + "adding": "\/me Prid\u0117tas\/a @%%NAME%% \u012f eil\u0119. Dabartin\u0117 eil\u0117: %%POSITION%%", + "usernotfound": "\/me Narys nerastas.", + "notdisconnected": "\/me @%%NAME%% nebuvo atsijung\u0119s per mano bud\u0117jim\u0105.", + "noposition": "\/me Nerasta paskutin\u0117 pozicija. Waitlist'as turi atsinaujinti nors karta kad priregistruotu nario paskutin\u0119 pozicij\u0105.", + "toolongago": "\/me @%%NAME%% paskutinis atsijungimas buvo per senai: %%TIME%%", + "valid": "\/me @%%NAME%% atsijung\u0117 prie\u0161 %%TIME%% ir tur\u0117tu b\u016bti pozicijoje: %%POSITION%%.", + "warning1": "\/me @%%NAME%%, tu i\u0161buvai AFK %%TIME%%, pra\u0161au atsakyti per 2 minutes arba b\u016bsite i\u0161mestas i\u0161 waitlist'o.", + "warning2": "\/me @%%NAME%%, tu b\u016bsi i\u0161mestas i\u0161 waitlist'o greitu laiku jeigu neatsakysi.", + "afkremove": "\/me @%%NAME%%, tu buvai i\u0161mestas i\u0161 waitlist'o u\u017e b\u016bvima AFK %%TIME%%. Tu buvai %%POSITION%% pozicijoje. Ra\u0161yk k\u0105 nors \u012f chat'\u0105 nors kart\u0105 per %%MAXIMUMAFK%% minutes, jeigu nori leisti savo dain\u0105.", + "caps": "\/me @%%NAME%%, i\u0161junk savo capslock'\u0105, pra\u0161au.", + "askskip": "\/me @%%NAME%%, nepra\u0161in\u0117k kad skip'int\u0173 dain\u0105.", + "spam": "\/me @%%NAME%%, pra\u0161au, nespamink.", + "roomadvertising": "\/me @%%NAME%%, nereklamuok kit\u0173 kambari\u0173, pra\u0161au.", + "adfly": "\/me @%%NAME%%, pra\u0161au pakeisk savo autowoot program\u0105. Si\u016blau tau PlugCubed: http:\/\/plugcubed.net\/", + "validgiftags": "/me [@%%NAME%%] [Tagai: %%TAGS%%] http://i.giphy.com/%%ID%%.gif", + "invalidgiftags": "/me [@%%NAME%%] [Tagai: %%TAGS%%] Klaidingi tagai, bandyk kažką kitą.", + "validgifrandom": "\/me [@%%NAME%%] [Random GIF] http:\/\/i.giphy.com\/%%ID%%.gif", + "invalidgifrandom": "\/me [@%%NAME%%] Neteisingas pra\u0161ymas, bandyk dar kart\u0105.", + "invalidtime": "\/me [@%%NAME%%] Nurodytas netinkamas laikas.", + "nouserspecified": "\/me [@%%NAME%%] Jokio nario nenurodyta.", + "invaliduserspecified": "\/me [@%%NAME%%] Netaisiklingas narys pasirinktas.", + "nolistspecified": "\/me [@%%NAME%%] Joks s\u0105ra\u0161as nenurodytas.", + "invalidlistspecified": "\/me [@%%NAME%%] Netaisyklingas s\u0105ra\u0161as nurodytas.", + "novaliduserspecified": "\/me [@%%NAME%%] Jokio galiojan\u010dio nario nepasirinkta.", + "nolimitspecified": "\/me [@%%NAME%%] Jokio limito nepara\u0161ei.", + "invalidlimitspecified": "\/me [@%%NAME%%] Netaisyklingas limitas.", + "invalidpositionspecified": "\/me [@%%NAME%%] Netaisyklinga pozicija nurodyta.", + "whois": "\/me [%%NAME1%%] Vartotojo vardas: %%NAME2%%, ID'as: %%ID%%, Rangas: %%RANK%%, Prisijung\u0117: %%JOINED%%, Levelis: %%LEVEL%%, Kalba: %%LANGUAGE%%, Avataras: %%AVATAR%%, Profilis: %%PROFILE%%", + "toggleon": "\/me [@%%NAME%%] %%FUNCTION%% \u012fjungta.", + "toggleoff": "\/me [@%%NAME%%] %%FUNCTION%% i\u0161jungta.", + "cmddeletion": "Komandos i\u0161trinimas", + "afkremoval": "AFK pa\u0161alinimas", + "afksremoved": "AFK's pa\u0161alinti", + "afklimit": "AFK limitas", + "autodisable": "Autoi\u0161jungimas", + "autoskip": "Autoskip", + "newblacklisted": "\/me [@%%NAME%%] \u0160is k\u016brinys priklauso %%BLACKLIST%% blacklist'ui! [ %%AUTHOR%% - %%TITLE%% - %%MID%% ]", + "blinfo": "[@%%NAME%%] Blacklist'o Informacija - autorius: %%AUTHOR%%, pavadinimas: %%TITLE%%, mid'ai: %%SONGID%%", + "blacklist": "Blacklist'as", + "cycleguard": "Cikloapsauginis", + "timeguard": "Laikoapsauginis", + "chatfilter": "Chatofiltras", + "historyskip": "Istorijosskip", + "lockdown": "U\u017erakinimas", + "lockguard": "U\u017erakinimoapsauginis", + "usercommands": "Nariokomandos", + "motd": "Pavadinimas", + "welcomemsg": "Pasisvekinimo \u017einut\u0117", + "songstats": "Dain\u0173 statistika", + "etarestriction": "ETA Apribojimas", + "voteskip": "Voteskip", + "voteskiplimit": "\/me [@%%NAME%%] Voteskip limitas dabar yra nustatytas \u012f %%LIMIT%% meh.", + "voteskipexceededlimit": "\/me @%%NAME%%, tavo daina vir\u0161ijo voteskip rib\u0105: (%%LIMIT%% meh).", + "voteskipinvalidlimit": "\/me [@%%NAME%%] Netaisyklingas voteskip limitas, bandykite dar kart\u0105 naudojant numer\u012f kad nurodyti kiek reikia meh.", + "voteskipsetlimit": "\/me [@%%NAME%%] Voteskip limitas nustatytas \u012f %%LIMIT%%.", + "activeusersintime": "\/me [@%%NAME%%] Buvo %%AMOUNT%% nari\u0173 susira\u0161in\u0117jan\u010diu per pastar\u0105sias %%TIME%% minutes.", + "maximumafktimeset": "\/me [@%%NAME%%] Maksimaliausias AFK laikas buvo nustatytas \u012f %%TIME%% minutes.", + "afkstatusreset": "\/me [@%%NAME%%] Atstatyt\u0117 AFK statusa nario @%%USERNAME%%.", + "inactivefor": "\/me [@%%NAME%%] @%%USERNAME%% buvo neaktyvus %%TIME%%.", + "inactivelonger": "\/me [@%%NAME%%] @%%USERNAME%% buvo neaktyvus ilgiau negu %%BOTNAME%% buvo prisijunges.", + "autowoot": "\/me Rekomenduoju tau PlugCubed kaip autowoot program\u0105: http:\/\/plugcubed.net\/", + "brandambassador": "\/me Brand Ambasadorius yra ausis ir akys visiems plug.dj nariams. Jie kuria renginius, u\u017esiema savo bendruomene, ir dalina plug.dj \u017einut\u0119 per vis\u0105 pasaul\u012f. Daugiau informacijos: https:\/\/plug.dj\/ba", + "bouncerplusrank": "\/me [@%%NAME%%] Tu turi b\u016bti manageris arba daugiau, kad gal\u0117tum \u012fjungti Bouncer+.", + "chatcleared": "\/me [@%%NAME%%] I\u0161val\u0117 \u0161\u012f ne\u0161var\u0173 chat'\u0105.", + "deletechat": "\/me [@%%NAME%%] I\u0161val\u0117 nario %%USERNAME%% chat'\u0105.", + "commandslink": "\/me %%BOTNAME%% komandos: %%LINK%%", + "eatcookie": "\/me suvalgo sausain\u012f.", + "nousercookie": "\/me neranda %%NAME%% \u0161iame kambaryje, ir sausain\u012f suvalgo pats.", + "selfcookie": "\/me @%%NAME%%, j\u016bs esate \u0161iek tiek gob\u0161us, argi ne? Duoti sausainius sau, bah. Pasidalink ir su kitais nariais!", + "cookie": "\/me @%%NAMETO%%, %%NAMEFROM%% %%COOKIE%%", + "cycleguardtime": "\/me [@%%NAME%%] Cikloapsauga yra nustatyta \u012f %%TIME%% minutes.", + "dclookuprank": "\/me [@%%NAME%%] Tik bouncer'iai ir auk\u0161\u010diau gali daryti kit\u0173 nari\u0173 paie\u0161ka.", + "emojilist": "\/me \u0160ypsen\u0117liu s\u0105ra\u0161as: %%LINK%%", + "notinwaitlist": "\/me @%%NAME%%, tu neesi DJ waitlist'e.", + "youarenext": "\/me @%%NAME%%, tu neb\u016bsi DJ po \u0161itos dainos.", + "youaredj": "\/me @%%NAME%%, dabar tu DJ.", + "eta": "\/me @%%NAME%%, tu pozicijoje %%POSITION%% waitlist'e ir pasieksi DJ stal\u0105 ma\u017edaug u\u017e: %%TIME%%.", + "facebook": "\/me Pam\u0117k mus facebook'e: %%LINK%%", + "starterhelp": "\/me \u0160i nuotrauka tau pad\u0117s prad\u0117ti plug'e: %%LINK%%", + "roulettejoin": "@%%NAME%% prisijun\u0117 \u012f rulet\u0119! (ra\u0161yk !leave jeigu nori i\u0161eiti)", + "jointime": "\/me [@%%NAMEFROM%%] @%%USERNAME%% buvo \u0161iame kambaryje %%TIME%%.", + "kickrank": "\/me [@%%NAME%%] negali i\u0161mesti nari\u0173 su tuo pa\u010diu rangu arba auk\u0161tesniu negu tavo!", + "kick": "\/me [@%%NAME%%], @%%USERNAME%% tu esi i\u0161metamas i\u0161 \u0161io kambario %%TIME%% minutemis.", + "kill": "\/me I\u0161jungiama.", + "logout": "\/me [@%%NAME%%] Atjungiamas %%BOTNAME%%", + "rouletteleave": "\/me @%%NAME%% i\u0161\u0117jo i\u0161 rulet\u0117s!", + "songlink": "\/me [@%%NAME%%] \u0160ios dainos link'as: %%LINK%%", + "usedlockskip": "\/me [%%NAME%% panaudojo lockskip'\u0105]", + "usedskip": "\/me [%%NAME%% panaudojo skip]", + "skippos": "\/me [@%%NAME%%] DJ'ejai dabar bus perkelti \u012f pozicij\u0105 %%POSITION%% kad bus praskipinta.", + "lockguardtime": "\/me [@%%NAME%%] U\u017erakinimoapsauga yra nustatyta \u012f %%TIME%% minutes.", + "maxlengthtime": "\/me [@%%NAME%%] Ilgiausios dainos laikas nustatytas \u012f %%TIME%% minutes.", + "motdset": "me Pavadinimas nustatytas \u012f: %%MSG%%", + "motdintervalset": "\/me Pavadinimo intervalas nustatytas \u012f %%INTERVAL%%.", + "currentbotname": "\/me Bot'o vardas dabar yra nustatytas \u012f: %%BOTNAME%%", + "botnameset": "\/me Bot'o vardas dabar yra nustatytas \u012f: %%BOTNAME%%", + "addbotwaitlist": "\/me @%%NAME%%, nebandyk prid\u0117ti man\u0119s \u012f waitlist'\u0105, pra\u0161au.", + "move": "\/me [%%NAME%% panaudojo move]", + "mutednotime": "\/me [@%%NAME%%] U\u017etild\u0117 @%%USERNAME%%.", + "mutedmaxtime": "\/me [@%%NAME%%] Tu gali u\u017etildyti daugiausiai %%TIME%% minutemis.", + "mutedtime": "\/me [@%%NAME%%] U\u017etild\u0117 @%%USERNAME%% laikotarpiui: %%TIME%% minutes.", + "unmuted": "\/me [@%%NAME%%] Atitild\u0117 @%%USERNAME%%.", + "muterank": "\/me [@%%NAME%%] Negali u\u017etildyti \u017emoni\u0173 su tokiu pa\u010diu rangu kaip tu, arba auk\u0161tesniu.", + "oplist": "\/me OP s\u0105ra\u0161as: %%LINK%%", + "pong": "\/me Smarv\u0117!", + "reload": "\/me Greitai gr\u012f\u0161iu.", + "removenotinwl": "\/me [@%%NAME%%] Nurodytas narys @%%USERNAME%% n\u0117ra waitlist'e.", + "roomrules": "\/me Kambario taisykles rasi \u010dia: %%LINK%%", + "sessionstats": "\/me [@%%NAME%%] Woot'ai: %%WOOTS%%, Meh'ai: %%MEHS%%, Pa\u010diupimai: %%GRABS%%.", + "forceskip": "\/me [%%NAME%% panaudojo greit\u0105j\u012f skip]", + "madeby": "\/me \u0160is bot'as buvo sukurtas %%NAME%%.", + "activefor": "A\u0161 buvau aktyvus %%TIME%%.", + "swapinvalid": "\/me [@%%NAME%%] Netaisyklingas narys nurodytas. (N\u0117ra vard\u0173 su tarpais!)", + "swapwlonly": "\/me [@%%NAME%%] Pra\u0161au keisk narius kurie yra waitlist'e!", + "swapping": "\/me Kei\u010diamas %%NAME1%% su %%NAME2%%.", + "genres": "\/me Leid\u017eiamus muzikos \u017eanrus rasi \u010dia: %%LINK%%", + "notbanned": "\/me [@%%NAME%%] Narys nebuvo u\u017eblokuotas.", + "unmutedeveryone": "\/me [@%%NAME%%] Visi nariai atitildyti.", + "unmuteeveryonerank": "\/me [@%%NAME%%] Tik manager'iai ir auk\u0161\u010diau gali atitildyti visus narius vienu metu.", + "notmuted": "\/me [@%%NAME%%] \u0161is narys nebuvo u\u017etildytas.", + "unmuterank": "\/me [@%%NAME%%] Negali atitildyti \u017emoni\u0173 su tokiu pa\u010diu rangu arba auk\u0161tesniu negu tavo.", + "commandscd": "\/me [@%%NAME%%] Komandas kurias gal\u0117s naudoti nariai po tinkamo laiko, laikas nustatytas \u012f: %%TIME%% sekundes.", + "voteratio": "\/me [@%%NAME%%] @%%USERNAME%% ~ woot'ai: %%WOOT%%, meh'ai: %%MEHS%%, ratio (W\/M): %%RATIO%%.", + "website": "\/me Pra\u0161ome apsilankyti m\u016bs\u0173 tinklapyje: %%LINK%%", + "youtube": "\/me [%%NAME%%] Prenumeruokite mus youtube'je: %%LINK%%", + "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%WOOT\/%%GRABS%%GRAB\/%%MEHS%%MEH.", + "thorNotClose": "\/me @%%NAME%%, esate nevertas priart\u0117ti prie plaktuko!", + "thorcd": "\/me @%%NAME%% tu gali pabandyti pakelti plaktuk\u0105 u\u017e %%TIME%% minu\u010di\u0173.", + "thorWorthy": "\/me @%%NAME%% tu esi vertas plaktuko :hammer:, sveikiname!", + "thorNotWorthy": "\/me @%%NAME%% tu neesi vertas plaktuko." +} diff --git a/lang/lv.json b/lang/lv.json old mode 100644 new mode 100755 index 9622f3b4..f0dd51a0 --- a/lang/lv.json +++ b/lang/lv.json @@ -1,24 +1,24 @@ { "cookies": [ - "iedeva jums \u0161okol\u0101des cepumu! ", - "iedeva jums m\u012bkstu m\u0101j\u0101s gatavotu auzu cepumu! ", - "Iedeva tuk\u0161u, sausu, un vecu cepumu. Vi\u0146\u0161 bija p\u0113d\u0113jais mais\u0101. Fuj.", - "iedeva jums cukura cepumu. Ko, bez glaz\u016bras un neapkais\u012bts? 0\/10 lab\u0101k neaiztiec.", - "Iedeva Jums cepumu ar \u0161okol\u0101d\u0113s gabali\u0146iem. Uzgaidi.. T\u0101s ir roz\u012bnes. Fuj!", - "iedeva jums milz\u012bgu cepumu. Bakstot to, tas tev dod vair\u0101k cepumu. D\u012bvaini.", - "iedeva jums laimes cepumu. Tur sac\u012bts ''K\u0101d\u0113\u013c J\u016bs nestr\u0101d\u0101jat pie neviena projekta?''", - "iedeva jums laimes cepumu. Tur sac\u012bts ''Izsaki k\u0101dam \u012bpa\u0161am komplimentu.''", - "iedeva jums laimes cepumu. Tur sac\u012bts ''Uz\u0146emies risku!''", - "iedeva jums laimes cepumu. Tur sac\u012bts ''Izej \u0101r\u0101.''", - "iedeva jums laimes cepumu. Tur sac\u012bts ''Neaizmirsti ap\u0113st savus d\u0101rzen\u012b\u0161us!''", - "iedeva jums laimes cepumu. Tur sac\u012bts ''Vai Tu visp\u0101r vari pacelt?''", - "iedeva Jums laimes cepumu. Tur teikts: \"m808 pls\"", - "iedeva jums laimes cepumu. Tur sac\u012bts ''Ja kustin\u0101si gurnus, ieg\u016bsi visas d\u0101mas.''", - "iedeva jums laimes cepumu. Tur sac\u012bts ''Es m\u012blu Tevi.''", - "iedeva jums Zelta Cepumu. Tu nevari to \u0113st, jo tas tais\u012bts no zelta. Nol\u0101d\u0113ts.", - "iedeva jums Oreo cepumu ar gl\u0101zi piena. ", - "iedeva jums varav\u012bksnes cepumu, gatavots ar m\u012blest\u012bbu :heart:", - "iedeva jums vecu cepumu, kas bija pamests \u0101r\u0101, liet\u016b. Tas ir sapel\u0113jis.", + "iedeva Tev \u0161okol\u0101des cepumu!", + "iedeva Tev m\u012bkstu m\u0101j\u0101s gatavotu auzu cepumu!", + "Iedeva Tev sausu un vecu cepumu. Vi\u0146\u0161 bija p\u0113d\u0113jais mais\u0101. Fuj!", + "iedeva Tev cukura cepumu. Ko? bez glaz\u016bras un neapkais\u012bts? 0\/10 lab\u0101k neaiztiec.", + "Iedeva Tev cepumu ar \u0161okol\u0101d\u0113s gabali\u0146iem. Uzgaidi.. T\u0101s ir roz\u012bnes. Fuj!", + "iedeva Tev milz\u012bgu cepumu! Bakstot vi\u0146u, tas tev dod vair\u0101k cepumu. D\u012bvaini..", + "iedeva Tev laimes cepumu. Tur rakst\u012bts ''K\u0101d\u0113\u013c Tu nestr\u0101d\u0101 pie neviena projekta?''", + "iedeva Tev laimes cepumu. Tur rakst\u012bts ''Izsaki k\u0101dam komplimentu!''", + "iedeva Tev laimes cepumu. Tur rakst\u012bts ''Uz\u0146emies risku!''", + "iedeva Tev laimes cepumu. Tur rakst\u012bts ''Izej \u0101r\u0101, pastaig\u0101jies.''", + "iedeva Tev laimes cepumu. Tur rakst\u012bts ''Neaizmirsti ap\u0113st savus d\u0101rzen\u012b\u0161us!''", + "iedeva Tev laimes cepumu. Tur rakst\u012bts ''Vai Tu visp\u0101r vari pacelt?''", + "iedeva Tev laimes cepumu. Tur rakst\u012bts \"m808 pls\"", + "iedeva Tev laimes cepumu. Tur rakst\u012bts ''Padejo, dab\u016bsi visas d\u0101mas.''", + "iedeva Tev laimes cepumu. Tur rakst\u012bts ''Es m\u012blu Tevi.''", + "iedeva Tev Zelta Cepumu. Tu nevari to \u0113st, jo tas tais\u012bts no zelta.", + "iedeva Tev Oreo ar gl\u0101zi piena.", + "iedeva Tev varav\u012bksnes cepumu, gatavots ar m\u012blest\u012bbu. :heart:", + "iedeva Tev vecu cepumu, vi\u0146\u0161 pamests \u0101r\u0101, liet\u016b. Tas ir sapel\u0113jis.", "gatavo Tev svaigus cepumus, tie smar\u017eo burv\u012bgi." ], "balls": [ @@ -43,7 +43,7 @@ "Izredzes ir labas!", "Uz to ner\u0113\u0137inies!", "Sav\u0101 laik\u0101, J\u0101!", - "Mani avoti saka ka n\u0113.", + "Definitely not.", "Noteikti n\u0113!", "Tev b\u016bs j\u0101uzgaida. ", "Man ir savas \u0161aubas..", @@ -53,8 +53,7 @@ "Izskat\u0101s labi! ", "Iesp\u0113jams..", "Vai Tu joko?", - "Uz to nepa\u013caujies.", - "Aizmirsti par to!" + "Uz to nepa\u013caujies." ], "nodatafound": "Iepriek\u0161\u0113jie dati nav atrasti. ", "currentlang": "\/me Valoda pa\u0161laik iestat\u012bta uz: %%LANGUAGE%%", @@ -65,128 +64,128 @@ "greyuser": "Tikai uzraugi un augst\u0101ki var palaist botu.", "bouncer": "Bots nevar p\u0101rvietot cilv\u0113kus, kad tas darbojas k\u0101 uzraugs.", "online": "\/me %%BOTNAME%% v%%VERSION%% tie\u0161saist\u0113!", - "welcome": "\/me \u010cau %%NAME%%", - "welcomeback": "\/me Sveiciens ar atgriez\u0161anos %%NAME%%", + "welcome": "\/me \u010chau %%NAME%%", + "welcomeback": "\/me Sveeeiciens ar atgriez\u0161anos, %%NAME%%", "songknown": "\/me @%%NAME%%, \u0161\u012b dziesma ir DJ v\u0113stur\u0113.", - "notavailable": "\/me @%%NAME%%, dziesma ko j\u016bs sp\u0113l\u0113j\u0101t nebija pieejama.", - "timelimit": "\/me @%%NAME%%, j\u016bsu dziesma ir gar\u0101ka nek\u0101 %%MAXLENGTH%% min\u016btes, jums ir nepiecie\u0161ama at\u013cauja, lai sp\u0113l\u0113tu gar\u0101kas dziesmas.", + "notavailable": "\/me @%%NAME%%, dziesma ko Tu sp\u0113l\u0113ji nebija pieejama.", + "timelimit": "\/me @%%NAME%%, Tava dziesma ir gar\u0101ka nek\u0101 %%MAXLENGTH%% min\u016btes, Tev ir nepiecie\u0161ama at\u013cauja, lai sp\u0113l\u0113tu gar\u0101kas dziesmas.", "permissionownsong": "\/me :up: @%%NAME%% ir at\u013cauja, lai sp\u0113l\u0113tu vi\u0146\u0101 pa\u0161u produkciju!", "isblacklisted": "\/me \u0160\u012b dziesma ir %%BLACKLIST%% melnaj\u0101 sarakst\u0101! Izlai\u017eam...", "isopen": "\/me Rulete tagad ir atv\u0113rta! Rakstiet !join lai piedal\u012btos!", "winnerpicked": "\/me Uzvar\u0113t\u0101js ir izv\u0113l\u0113ts! @%%NAME%% p\u0101rmetam uz %%POSITION%%.", - "ball": "\/me %%NAME%%'s jaut\u0101jums bija: \"%%QUESTION%%\" un %%BOTNAME%%'a atbilde ir: \"%%RESPONSE%%\"", + "ball": "\/me %%NAME%%'a jaut\u0101jums bija: \"%%QUESTION%%\" un %%BOTNAME%%'a atbilde ir: \"%%RESPONSE%%\"", "notghosting": "[%%NAME1%%] %%NAME2%% nespokoj\u0101s.", "ghosting": "[%%NAME1%%] %%NAME2%% spokoj\u0101s, vai ar\u012b neatrodas \u0161eit.", "alreadyadding": "\/me Lietot\u0101js tiek pievienots! Main\u012bt v\u0113lamo poz\u012bciju, uz %%POSITION%%.", "adding": "\/me Pievieno @%%NAME%% iek\u0161 rindas. J\u016bsu vieta rind\u0101: %%POSITION%%.", - "usernotfound": "\/me Lietot\u0101js nav atrasts.", + "usernotfound": "\/me Lietot\u0101js nav atrasts. ", "notdisconnected": "\/me @%%NAME%% nebija atvienojies, kam\u0113r biju \u0161eit.", "noposition": "\/me Vieta rind\u0101 nav zin\u0101ma. Rinda j\u0101atjaunina lai atrastu lietot\u0101ja vietu rind\u0101.", "toolongago": "\/me @%%NAME%%'s atvieno\u0161an\u0101s bija p\u0101rak ilga: %%TIME%%", - "valid": "\/me @%%NAME%%atvienoj\u0101s pirms: %%TIME%% un vieta rind\u0101 j\u0101b\u016bt: %%POSITION%%", - "warning1": "\/me @%%NAME%%, J\u016bs esat AFK jau %%TIME%%, l\u016bdzu atbildiet 2 min\u016b\u0161u laik\u0101, vai tiksiet no\u0146emts.", - "warning2": "\/me @%%NAME%%, J\u016bs tiksiet no\u0146emts d\u0113\u013c AFK, ja neatbild\u0113siet.", - "afkremove": "\/me @%%NAME%%. JTu tiki no\u0146emts no rindas, jo biji afk %%TIME%%. Tu biji kart\u0101 %%POSITION%%. N\u0101kamaj\u0101 reiz\u0113 \u010dato reizi %%MAXIMUMAFK%% min\u016btes, ja gribi palikt rind\u0101.", + "valid": "\/me @%%NAME%% atvienoj\u0101s pirms: %%TIME%% un vieta rind\u0101 j\u0101b\u016bt: %%POSITION%%", + "warning1": "\/me @%%NAME%%, Tu esi AFK jau %%TIME%%, l\u016bdzu atbildi 2 min\u016b\u0161u laik\u0101, vai tiksi no\u0146emts.", + "warning2": "\/me @%%NAME%%, Ja neatbild\u0113si, Tu tiksi no\u0146emts par b\u016b\u0161anu AFK.", + "afkremove": "\/me @%%NAME%%. Tu tiki no\u0146emts no rindas, jo biji afk %%TIME%%. Tu biji %%POSITION%% rind\u0101. N\u0101kamaj\u0101 reiz\u0113 \u010dato reizi %%MAXIMUMAFK%% min\u016btes, ja gribi palikt rind\u0101.", "caps": "\/me @%%NAME%%, L\u016bdzu, neturi CAPSLOCK pogu.", - "askskip": "\/me @%%NAME%%, nel\u016bdz lai izlai\u017e.", + "askskip": "\/me @%%NAME%%, neprasi lai izlai\u017e.", "spam": "\/me @%%NAME%%, l\u016bdzu, nespamo.", "roomadvertising": "\/me @%%NAME%%, l\u016bdzu, neliec saites uz cit\u0101m kopien\u0101m.", - "adfly": "\/me @%%NAME%%,L\u016bdzu mainiet savu \"autowoot\" programmu. M\u0113s iesak\u0101m \u0161o. http:\/\/plugcubed.net\/", - "validgiftags": "\/me [@%%NAME%%] http:\/\/media.giphy.com\/media\/%%ID%%\/giphy.gif [Tegi: %%TAGS%%]", - "invalidgiftags": "\/me [@%%NAME%%] Neder\u012bga eti\u0137ete, m\u0113\u0123iniet kaut ko citu. [Tegi: %%TAGS%%]", - "validgifrandom": "\/me [@%%NAME%%] http:\/\/media.giphy.com\/media\/%%ID%%\/giphy.gif [Nejau\u0161s GIFs]", - "invalidgifrandom": "\/me [@%%NAME%%] Neder\u012bgs piepras\u012bjums, m\u0113\u0123ini v\u0113lreiz.", - "invalidtime": "\/me [@%%NAME%%] Noteikts nedr\u012bgs laiks.", - "nouserspecified": "\/me [@%%NAME%%] Lietot\u0101js nav preciz\u0113ts.", + "adfly": "\/me @%%NAME%%, L\u016bdzu mainiet savu \"autowoot\" programmu. M\u0113s iesak\u0101m \u0161o. http:\/\/plugcubed.net\/", + "validgiftags": "/me [@%%NAME%%] [%%TAGS%%] http://i.giphy.com/%%ID%%.gif", + "invalidgiftags": "\/me [@%%NAME%%] [%%TAGS%%] Neder\u012bgs tags.", + "validgifrandom": "\/me [@%%NAME%%] [Random GIF] http:\/\/i.giphy.com\/%%ID%%.gif", + "invalidgifrandom": "\/me [@%%NAME%%] Neder\u012bgs piepras\u012bjums.", + "invalidtime": "\/me [@%%NAME%%] Nedr\u012bgs laiks.", + "nouserspecified": "\/me [@%%NAME%%] Nenoteikts lietot\u0101js.", "invaliduserspecified": "\/me [@%%NAME%%] Neder\u012bgs lietot\u0101js.", "nolistspecified": "\/me [@%%NAME%%] Nenoteikts saraksts.", "invalidlistspecified": "\/me [@%%NAME%%] Noteikts neder\u012bgs saraksts.", - "novaliduserspecified": "\/me [@%%NAME%%] Nav noteikts der\u012bgs lietot\u0101js.", + "novaliduserspecified": "\/me [@%%NAME%%] Neder\u012bgs lietot\u0101js.", "nolimitspecified": "\/me [@%%NAME%%] Nav noteikts limits.", "invalidlimitspecified": "\/me [@%%NAME%%] Neder\u012bgs limits.", "invalidpositionspecified": "\/me [@%%NAME%%] Preciz\u0113ta neder\u012bga poz\u012bcija.", - "whois": "\/me [%%NAME1%%] Lietot\u0101js: %%NAME2%%, ID: %%ID%%, Ranks: %%RANK%%, Pievienojies: %%JOINED%%, L\u012bmenis: %%LEVEL%%, Valoda: %%LANGUAGE%%, Avatars: %%AVATAR%%, Status: %%STATUS%%, Profils: %%PROFILE%%", - "toggleon": "\/me [@%%NAME%%] %%FUNCTION%% iesl\u0113gta.", - "toggleoff": "\/me [@%%NAME%%] %%FUNCTION%% izslegta", + "whois": "\/me [%%NAME1%%] Lietot\u0101jv\u0101rds: %%NAME2%%, ID: %%ID%%, Ranks: %%RANK%%, Pievienojies: %%JOINED%%, L\u012bmenis: %%LEVEL%%, Valoda: %%LANGUAGE%%, Avatars: %%AVATAR%%, Status: %%STATUS%%, Profils: %%PROFILE%%", + "toggleon": "\/me [@%%NAME%%] %%FUNCTION%% iesl\u0113gts.", + "toggleoff": "\/me [@%%NAME%%] %%FUNCTION%% izsl\u0113gts.", "cmddeletion": "komandu dz\u0113\u0161ana.", - "afkremoval": "AFK izdz\u0113\u0161ana", - "afksremoved": "AFK izdz\u0113sts", + "afkremoval": "AFK dz\u0113\u0161ana", + "afksremoved": "AFK dz\u0113sti", "afklimit": "AFK limits ", - "autodisable": "autoizsleg\u0161ana", - "autoskip": "autoizlaiz\u0161ana", - "newblacklisted": "\/me [@%%NAME%%] \u0160\u012b dziesma pieder %%BLACKLIST%% melnajam sarakstam [ %%AUTHOR%% - %%TITLE%% - %%MID%% ]", - "blinfo": "[@%%NAME%%]Meln\u0101 saraksta info - autors: %%AUTHOR%%, virsraksts: %%TITLE%%, mid: %%SONGID%%", + "autodisable": "autodisable", + "autoskip": "autoskip", + "newblacklisted": "\/me [@%%NAME%%] \u0160\u012b dziesma pieder %%BLACKLIST%% melnajam sarakstam! [ %%AUTHOR%% - %%TITLE%% - %%MID%% ]", + "blinfo": "[@%%NAME%%] Meln\u0101 saraksta info - autors: %%AUTHOR%%, virsraksts: %%TITLE%%, mid: %%SONGID%%", "blacklist": "melnais saraksts", - "cycleguard": "rin\u0137o\u0161anas sargs", - "timeguard": "Laikraugs", + "cycleguard": "cycleguard", + "timeguard": "timeguard", "chatfilter": "\u010cata Filtrs", - "historyskip": "V\u0113stures izlaiz\u0161ana", - "lockdown": "Sl\u0113gts ", - "lockguard": "Sl\u0113gtraugs", + "historyskip": "historyskip", + "lockdown": "lockdown", + "lockguard": "lockguard", "usercommands": "lietot\u0101jkomandas", "motd": "MotD ", - "welcomemsg": "Iel\u016bg\u0161anas v\u0113stule.", - "songstats": "dziesmas statistika", + "welcomemsg": "Sveiciens", + "songstats": "dziesmu statistika", "etarestriction": "eta robe\u017eas", "voteskip": "izlaist ar balso\u0161anu", - "voteskiplimit": "\/me [@%%NAME%%] Izlaiz\u0161ana ar balso\u0161anu limits ir uzst\u0101d\u012bts uz %%LIMIT%% meh'iem", - "voteskipexceededlimit": "\/me @%%NAME%%, J\u016bsu dziesma ir p\u0101rsniegusi \"izlaist ar balso\u0161anu\" limitu (%%LIMIT%% meh'i).", - "voteskipinvalidlimit": "\/me [@%%NAME%%] Neder\u012bga \"Izlaiz\u0161ana ar balso\u0161anu\" m\u0113\u0123iniet v\u0113lreiz un nor\u0101diet der\u012bgu meh'u skaitu", - "voteskipsetlimit": "\/me [@%%NAME%%] \"Izlaizt ar balso\u0161anu\" limits ir iestat\u012bts uz %%LIMIT%%", - "activeusersintime": "\/me [@%%NAME%%] P\u0113dej\u0101s %%TIME%% min\u016bt\u0113s, \u0161it \u010datoja %%AMOUNT%% lietot\u0101ji.", + "voteskiplimit": "\/me [@%%NAME%%] Voteskip limits iestat\u012bts uz %%LIMIT%% meh'iem", + "voteskipexceededlimit": "\/me @%%NAME%%, Tava dziesma p\u0101rsniedz \"voteskip\" limitu (%%LIMIT%% meh'i).", + "voteskipinvalidlimit": "\/me [@%%NAME%%] Neder\u012bgs \"Voteskip\" limits! Nor\u0101diet numuru priek\u0161 meh'iem", + "voteskipsetlimit": "\/me [@%%NAME%%] \"voteskip\" limits ir iestat\u012bts uz %%LIMIT%%", + "activeusersintime": "\/me [@%%NAME%%] P\u0113dej\u0101s %%TIME%% min\u016bt\u0113s, \u0161eit \u010datoja %%AMOUNT%% lietot\u0101ji.", "maximumafktimeset": "\/me [@%%NAME%%] Maksim\u0101lais AFK ilgums iestat\u012bts uz %%TIME%% min\u016bt\u0113m.", - "afkstatusreset": "\/me [@%%NAME%%]Resetart\u0113ja afk statusu priek\u0161 @%%USERNAME%%.", + "afkstatusreset": "\/me [@%%NAME%%] No\u0146\u0113ma @%% AFK no %%USERNAME%%.", "inactivefor": "\/me [@%%NAME%%] @%%USERNAME%% ir neakt\u012bvs jau %%TIME%%.", - "inactivelonger": "\/me [@%%NAME%%] @%%USERNAME%% ir neakt\u012bvs ilg\u0101k nek\u0101 %%BOTNAME%%'s ir online.", + "inactivelonger": "\/me [@%%NAME%%] @%%USERNAME%% ir neakt\u012bvs ilg\u0101k nek\u0101 %%BOTNAME%%'s ir piesl\u0113dzies.", "autowoot": "\/me M\u0113s iesak\u0101m \u0161o priek\u0161 \"autowoot\" : http:\/\/plugcubed.net\/", - "brandambassador": "\/me Mened\u017eeri ir plug.dj pal\u012bgi, kas pal\u012bdz lietot\u0101jiem atbild\u0113t uz jaut\u0101jumiem. K\u0101 ar\u012b vi\u0146i veido pas\u0101kumus, un pal\u012bdz. :) Vair\u0101k info: https:\/\/plug.dj\/ba", + "brandambassador": "\/me P\u0101rst\u0101vji, jeb (Brand Ambassador) ir plug.dj pal\u012bgi, kas pal\u012bdz lietot\u0101jiem atbild\u0113t uz jaut\u0101jumiem. K\u0101 ar\u012b vi\u0146i veido pas\u0101kumus, un pal\u012bdz. :) Vair\u0101k info: https:\/\/plug.dj\/ba", "bouncerplusrank": "\/me [@%%NAME%%] Jums ir j\u0101b\u016bt mened\u017eerim, vai augst\u0101k lai pievienotu Uzraugus.", "chatcleared": "\/me [@%%NAME%%] \u010cats izt\u012br\u012bts.", - "deletechat": "\/me [@%%NAME%%] Izt\u012brija \u010d\u0101tu no %%USERNAME%%.", + "deletechat": "\/me [@%%NAME%%] Izt\u012brija \u010datu no %%USERNAME%%.", "commandslink": "\/me %%BOTNAME%% komandas: %%LINK%% ", "eatcookie": "\/me \u0146amm\u0101 cepumu.", "nousercookie": "\/em nevar\u0113ju atrast %%NAME%%, tap\u0113c \u0113d\u012b\u0161u cepumus es pats. :P", "selfcookie": "\/me @%%NAME%%, tu esi cietsird\u012bgs! Dod pats sev cepumus, bah. Padalies ar citiem!", "cookie": "\/me @%%NAMETO%%, %%NAMEFROM%% %%COOKIE%% ", - "cycleguardtime": "\/me [@%%NAME%%] Ap\u013co\u0161anas sargs ir uzst\u0101d\u012bts uz %%TIME%% Min\u016bti", + "cycleguardtime": "\/me [@%%NAME%%] \"cycleguard\" ir iestat\u012bts uz %%TIME%% min\u016bti.", "dclookuprank": "\/me [@%%NAME%%] Tikai uzraugi, un augst\u0101ki var uzmekl\u0113t citus.", "emojilist": "\/me Smaidi\u0146i: %%LINK%%", - "notinwaitlist": "\/me @%%NAME%%, J\u016bs n\u0113esat rind\u0101.", + "notinwaitlist": "\/me @%%NAME%%, tu n\u0113esi rind\u0101.", "youarenext": "\/me @%%NAME%%, tu b\u016bsi DJ p\u0113c \u0161\u012bs dziesmas!", - "youaredj": "\/me @%%NAME%% J\u016bs esat DJ", - "eta": "\/me @%%NAME%%, j\u016bs esat %%POSITION%%. rind\u0101, un k\u0101psiet uz skatuves apm\u0113ram p\u0113c %%TIME%%.", + "youaredj": "\/me @%%NAME%% Tu esi DJ.", + "eta": "\/me @%%NAME%%, Tu esi %%POSITION%% rind\u0101, un k\u0101psi uz skatuves apm\u0113ram p\u0113c %%TIME%%.", "facebook": "\/me Spie\u017eat pat\u012bk musu facebook'\u0101: %%LINK%%", "starterhelp": "\/me \u0160\u012b bilde jums pal\u012bdz\u0113s start\u0113t iek\u0161 plug: %%LINK%%", "roulettejoin": "\/me @%%NAME%% pievienoj\u0101s ruletei! (!leave ja tu p\u0101rdom\u0101ji)", "jointime": "\/me [@%%NAMEFROM%%] @%%USERNAME%% ir \u0161aj\u0101 kopien\u0101 jau %%TIME%%.", "kickrank": "\/me [@%%NAME%%] J\u016bs nevarat izmest lietot\u0101jus kuriem ir vien\u0101ds, vai augst\u0101ks ranks k\u0101 Tev!", "kick": "\/me [@%%NAME%%], @%%USERNAME%% J\u016bs tiekat izmests no kopienas uz %%TIME%% min\u016bt\u0113m.", - "kill": "\/me Izsl\u0113dz\u0101s...", - "logout": "\/me [@%%NAME%%] Atvieno %%BOTNAME%%", - "rouletteleave": "\/me @%%NAME%% pameta ruleti! ", + "kill": "\/me Izsl\u0113dzos, att\u0101! :(", + "logout": "\/me [@%%NAME%%] <-- Slepkava.. Izsl\u0113dz %%BOTNAME%%", + "rouletteleave": "\/me @%%NAME%% pameta ruleti! Baidies?", "songlink": "\/me [@%%NAME%%] Saite uz pa\u0161reiz\u0113jo dziesmu: %%LINK%% ", - "usedlockskip": "\/me [%%NAME%% aizliedz izlaist dziesmu]", + "usedlockskip": "\/me [%%NAME%% lietoja \"lockskip\"]", "usedskip": "\/me [%%NAME%% izlaida dziesmu]", "skippos": "\/me [@%%NAME%%] DJ tiks p\u0101rmesti uz %%POSITION%% vietu rind\u0101, ja izlaid\u012bs dziesmu.", - "lockguardtime": "\/me [@%%NAME%%] Aizsl\u0113dza rindu uz %%TIME%% min\u016bti.", + "lockguardtime": "\/me [@%%NAME%%] \"lockguard\" ir iestat\u012bts uz %%TIME%% min\u016bti.", "maxlengthtime": "\/me [@%%NAME%%] Maksim\u0101lais dziesmas garums ir iestat\u012bts uz %%TIME%% min\u016bt\u0113m.", "motdset": "\/me MotD iestat\u012bts: %%MSG%%", "motdintervalset": "\/me MotD interv\u0101ls iestat\u012bts: %%INTERVAL%%.", - "currentbotname": "\/me Bota v\u0101rds pa\u0161laik iestat\u012bts uz: %%BOTNAME%%", - "botnameset": "\/me Bota v\u0101rds iestat\u012bts uz: %%BOTNAME%%", + "currentbotname": "\/me Bota v\u0101rds ir iestat\u012bts k\u0101: %%BOTNAME%%", + "botnameset": "\/me Bota v\u0101rds iestat\u012bts k\u0101: %%BOTNAME%%", "addbotwaitlist": "\/me @%%NAME%%, l\u016bdzu, nem\u0113\u0123ini mani pievienot rindai.", - "move": "\/me [%%NAME%% p\u0101rvietoja.]", + "move": "\/me [%%NAME%% p\u0101rvietoja]", "mutednotime": "\/me [@%%NAME%%] Apklusin\u0101ja @%%USERNAME%%.", - "mutedmaxtime": "\/me [@%%NAME%%] J\u016bs varat apklusin\u0101t tikai uz %%TIME%% min\u016bt\u0113m.", + "mutedmaxtime": "\/me [@%%NAME%%] Tu vari apklusin\u0101t tikai uz %%TIME%% min\u016bt\u0113m.", "mutedtime": "\/me [@%%NAME%%] Apklusin\u0101ja @%%USERNAME%% uz %%TIME%% min\u016bt\u0113m.", - "unmuted": "\/me [@%%NAME%%] at\u013c\u0101va run\u0101t @%%USERNAME%%", + "unmuted": "\/me [@%%NAME%%] at\u013c\u0101va run\u0101t @%%USERNAME%%.", "muterank": "\/me [@%%NAME%%] J\u016bs n\u0113varat apklusin\u0101t lietot\u0101jus, kas ir t\u0101d\u0101 pa\u0161\u0101, vai augst\u0101k\u0101 rank\u0101 par tevi.", "oplist": "\/me OP saraksts: %%LINK%% ", "pong": "\/me Pong! ", "reload": "\/me Dr\u012bz b\u016b\u0161u atpaka\u013c.", "removenotinwl": "\/me [@%%NAME%%] @%%USERNAME%% nav rind\u0101.", "roomrules": "\/me Kopienas noteikumi izlas\u0101mi \u0161eit: %%LINK%%", - "sessionstats": "\/me [@%%NAME%%]Woot'i:%%WOOTS%%, Meh'i: %%MEHS%%, Pa\u0146emti: %%GRABS%%.", + "sessionstats": "\/me [@%%NAME%%] Woot'i: %%WOOTS%%, Meh'i: %%MEHS%%, Pa\u0146\u0113ma: %%GRABS%%.", "forceskip": "\/me [%%NAME%% piespieda izlaist dziesmu]", "madeby": "\/me \u0160o botu izveidoja %%NAME%%.", "activefor": "Esmu bijis akt\u012bvs jau %%TIME%%.", @@ -194,14 +193,18 @@ "swapwlonly": "\/me [@%%NAME%%] L\u016bdzu, mainies tikai ar lietot\u0101jiem kas atrodas rind\u0101!", "swapping": "\/me Mainu %%NAME1%% ar %%NAME2%%.", "genres": "\/me Kopienas \u017eanrus vari atrast \u0161eit: %%LINK%%", - "notbanned": "\/me [@%%NAME%%] Lietot\u0101js nav nobanots.", + "notbanned": "\/me [@%%NAME%%] Lietot\u0101js nav banots.", "unmutedeveryone": "\/me [@%%NAME%%] At\u013c\u0101va visiem run\u0101t,", - "unmuteeveryonerank": "\/me [@%%NAME%%] Tikai mened\u017eeris un augst\u0101k var at\u013caut visiem run\u0101t vienlaikus.", + "unmuteeveryonerank": "\/me [@%%NAME%%] Tikai mened\u017eeris un augst\u0101ki var at\u013caut visiem run\u0101t vienlaikus.", "notmuted": "\/me [@%%NAME%%] \u0160is lietot\u0101js netika apklusin\u0101ts.", "unmuterank": "\/me [@%%NAME%%] J\u016bs nevarat at\u013caut run\u0101t lietot\u0101jiem ar t\u0101du pa\u0161u, vai augst\u0101ku ranku k\u0101 tev.", "commandscd": "\/me [@%%NAME%%] Komandu \"anti-spam\" laiks priek\u0161 lietot\u0101jiem ir iestat\u012bts uz %%TIME%% sekund\u0113m.", "voteratio": "\/me [@%%NAME%%] @%%USERNAME%% ~ Woot'i: %%WOOT%%, Meh'i: %%MEHS%%, Procentu\u0101li: %%RATIO%%.", "website": "\/me M\u016bsu m\u0101jaslapa: %%LINK%%", "youtube": "\/me [%%NAME%%] Abon\u0113jiet m\u016bs Youtub\u0113: %%LINK%%", - "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%W\/%%GRABS%%G\/%%MEHS%%\/M." -} \ No newline at end of file + "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%W\/%%GRABS%%G\/%%MEHS%%\/M.", + "thorNotClose": "\/me @%%NAME%%, you're not worthy of getting close to the hammer!", + "thorcd": "\/me @%%NAME%% you can try to lift the hammer in %%TIME%% minutes.", + "thorWorthy": "\/me @%%NAME%% you're worthy of the hammer :hammer:, congratulations!", + "thorNotWorthy": "\/me @%%NAME%% you're not worthy of the hammer." +} diff --git a/lang/ms.json b/lang/ms.json new file mode 100755 index 00000000..5607e089 --- /dev/null +++ b/lang/ms.json @@ -0,0 +1,210 @@ +{ + "cookies": [ + "telah bagi anda satu cookies cip coklat!", + "telah bagi anda satu kuki oatmeal buatan sendiri yang lembut!", + "telah bagi anda satu biasa, kering, kuki lama. Ia adalah yang terakhir di dalam beg. Kasar.", + "memberikan anda satu cookie gula. Apa, tidak beku dan tabur? 0\/10 Ulasan-ulasan tidak akan menyentuh.", + "memberikan anda cookie cip coklat. Oh tunggu, mereka adalah kismis. Bleck!", + "memberi anda cookie besar. Poking ia memberikan anda lebih kuki. Pelik.", + "memberikan anda cookie nasib. Ia berkata \"Mengapa tidak anda bekerja di mana-mana projek?\"", + "memberikan anda cookie nasib. Ia berkata \"Beri seseorang yang istimewa pujian\"", + "memberikan anda cookie nasib. Ia berkata \"Mengambil risiko!\"", + "memberikan anda cookie nasib. Ia berkata \"Pergilah luar.\"", + "memberikan anda cookie nasib. Ia berkata \"Jangan lupa untuk makan sayur-sayuran anda!\"", + "memberikan anda cookie nasib. Ia berkata \"Adakah anda mengangkat?\"", + "memberikan anda cookie nasib. Ia berkata \"m808 pls\"", + "memberikan anda cookie nasib. Ia berkata \"Jika anda bergerak pinggul anda, anda akan mendapat semua wanita.\"", + "memberikan anda cookie nasib. Ia berkata \"Aku cinta pada mu.\"", + "memberikan anda Cookie Emas. Anda tidak boleh memakannya kerana ia diperbuat daripada emas. Sial.", + "memberi anda cookie Oreo dengan segelas susu!", + "memberikan anda cookie pelangi dibuat dengan kasih sayang :heart:", + "memberi anda cookie lama yang telah ditinggalkan dalam hujan, ia berkulat.", + "membuat anda cookies segar, ia berbau luar biasa." + ], + "balls": [ + "Tanda menunjukkan kepada ya.", + "Ya.", + "Jawap berjerebu, cuba lagi.", + "Tanpa ragu-ragu.", + "Sumber saya mengatakan tidak.", + "Pada pandangan saya, ya.", + "Anda boleh bergantung kepada ia.", + "Menumpukan perhatian dan tanya lagi.", + "Outlook tidak begitu baik.", + "Ia adalah jelas demikian.", + "Lebih baik tidak memberitahu anda sekarang.", + "Sangat menyangsikan.", + "Ya - pasti.", + "Adalah pasti.", + "Tidak boleh meramalkan sekarang.", + "Kemungkinan besar.", + "Tanya lagi kemudian.", + "Jawapan saya adalah tidak.", + "Outlook baik.", + "Jangan mengharapkan ia.", + "Ya, dalam masa yang sewajarnya.", + "Sudah pasti tidak.", + "Anda perlu menunggu.", + "Saya mempunyai keraguan saya.", + "Outlook serdehana.", + "Kelihatan baik kepada saya!", + "Siapa tahu?", + "Kelihatan baik!", + "Mungkin.", + "Adakah anda bergurau?", + "Jangan bertaruh di atasnya.", + "Lupakan mengenainya." + ], + "nodatafound": "Tiada data sebelumnya dijumpai.", + "currentlang": "\/me Bahasa semasa tetap pada: %%LANGUAGE%%", + "langerror": "\/me Bahasa yang anda pilih tidak available. Sila layari %%LINK%% untuk mendapatkan senarai bahasa yang available.", + "langset": "\/me Bahasa sekarang ditetapkan ke: %%LANGUAGE%%", + "retrievingdata": "Mendapatkan semula data yang disimpan sebelum ini.", + "datarestored": "Data yang disimpan sebelum ini telah berjaya diambil.", + "greyuser": "Hanya bouncer dan pangkat lebih tinggi boleh menjalankan bot.", + "bouncer": "Bot tidak boleh bergerak orang apabila ia dijalankan sebagai bouncer.", + "online": "\/me %%BOTNAME%% v%%VERSION%% online!", + "welcome": "\/me Selamat Datang %%NAME%%", + "welcomeback": "\/me Selamat Kembali, %%NAME%%", + "songknown": "\/me @%%NAME%%, Lagu ini berada dalam Sejarah DJ.", + "notavailable": "\/me @%%NAME%%, lagu yang anda main tidak available.", + "timelimit": "\/me @%%NAME%%, lagu anda telah melebihi panjang dari %%MAXLENGTH%% minit, anda perlu ada kebenaran untuk memainkan lagu-lagu yang panjang.", + "permissionownsong": "\/me :up: @%%NAME%% memperolehi kebenaran untuk memainkan pengeluaran mereka sendiri!", + "isblacklisted": "\/me Lagu ini ada didalam %%BLACKLIST%% blacklist! Melangkau...", + "isopen": "\/me Roulette sekarang dibuka! Taip !join untuk mengambil bahagian! (Satu permainan di mana peserta rawak dipindahkan ke kedudukan yang rawak dalam senarai menunggu)", + "winnerpicked": "\/me Satu Pemenang akan dipilih! @%%NAME%% ke kedudukan %%POSITION%%.", + "ball": "\/me %%NAME%% punya soalan adalah: \"%%QUESTION%%\" dan %%BOTNAME%% punya jawapan ialah: \"%%RESPONSE%%\"", + "notghosting": "[%%NAME1%%] %%NAME2%% bukan hantu.", + "ghosting": "[%%NAME1%%] %%NAME2%% mungkin hantu kat sini atau tidak berada di sini.", + "alreadyadding": "\/me Pengguna telah ditambahkan! Menukarkan kedudukan yang dikehendaki ke %%POSITION%%.", + "adding": "\/me Menambahkan @%%NAME%% ke dalam senarai tunggu. Giliran semasa: %%POSITION%%.", + "usernotfound": "\/me Pengguna tidak dijumpai.", + "notdisconnected": "\/me @%%NAME%% tidak putus sambungan pada masa saya disini.", + "noposition": "\/me Tiada kedudukan terakhir yang diketahui. Senarai menunggu perlu mengemas kini sekurang-kurangnya sekali untuk mendaftar kedudukan terakhir pengguna.", + "toolongago": "\/me @%%NAME%% putus sambungan yang terakhir (DC atau Meninggalkan) adalah terlalu lama dahulu: %%TIME%%.", + "valid": "\/me @%%NAME%% putus sambungan %%TIME%% dahulu dan sepatutnya berada di kedudukan %%POSITION%%.", + "warning1": "\/me @%%NAME%%, anda telah afk untuk %%TIME%%, sila bertindak balas dalam masa 2 minit atau anda akan dikeluarkan dari senarai menunggu.", + "warning2": "\/me @%%NAME%%, anda akan dikeluarkan dari senarai menunggu tidak lama lagi disebadkan afk jika tidak bertindak balas.", + "afkremove": "\/me @%%NAME%%, anda telah dikeluarkan dari senarai menunggu sebab afk untuk %%TIME%%. Anda berada di kedudukan %%POSITION%%. Chat sekurang-kurangnya sekali dalam setiap %%MAXIMUMAFK%% minit jika anda mahu memainkan lagu.", + "caps": "\/me @%%NAME%%, sila tutup capslock butang.", + "askskip": "\/me @%%NAME%%, Jangan meminta untuk melangkau.", + "spam": "\/me @%%NAME%%, sila jangan spam.", + "roomadvertising": "\/me @%%NAME%%, sila jangan pos link ke bilik-bilik lain.", + "adfly": "\/me @%%NAME%%, sila tukar autowoot program anda. Kami mencadangkan Plugcubed: http:\/\/plugcubed.net", + "validgiftags": "/me [@%%NAME%%] [Tag: %%TAGS%%] http://i.giphy.com/%%ID%%.gif", + "invalidgiftags": "/me [@%%NAME%%] [Tag: %%TAGS%%] tag yang tidak sah, sila cuba yang lain.", + "validgifrandom": "\/me [@%%NAME%%] [Random GIF] http:\/\/i.giphy.com\/%%ID%%.gif", + "invalidgifrandom": "\/me [@%%NAME%%] Permintaan yang tidak sah, cuba lagi.", + "invalidtime": "\/me [@%%NAME%%] masa yang dinyatakan tidak sah.", + "nouserspecified": "\/me [@%%NAME%%] Tidak ada pengguna yang dinyatakan.", + "invaliduserspecified": "\/me [@%%NAME%%] pengguna yang dinyatakan tidak sah.", + "nolistspecified": "\/me [@%%NAME%%] tidak ada senarai yang dinyatakan.", + "invalidlistspecified": "\/me [@%%NAME%%] senarai dinyatakan yang tidak sah.", + "novaliduserspecified": "\/me [@%%NAME%%] Tiada pengguna yang sah dinyatakan.", + "nolimitspecified": "\/me [@%%NAME%%] Tiada had yang ditetapkan.", + "invalidlimitspecified": "\/me [@%%NAME%%] had yang tidak sah.", + "invalidpositionspecified": "\/me [@%%NAME%%] Kedudukan yang dinyatakan tidak sah.", + "whois": "\/me [%%NAME1%%] Nama Pengguna: %%NAME2%%, ID: %%ID%%, Pangkat: %%RANK%%, Menyertai Pada: %%JOINED%%, Level: %%LEVEL%%, Bahasa: %%LANGUAGE%%, Avatar: %%AVATAR%%, Profil: %%PROFILE%%", + "toggleon": "\/me [@%%NAME%%] %%FUNCTION%% diaktifkan.", + "toggleoff": "\/me [@%%NAME%%] %%FUNCTION%% telah dihentikan.", + "cmddeletion": "penghapusan perintah", + "afkremoval": "Penghapusan AFK", + "afksremoved": "AFK dihapus", + "afklimit": "Had AFK", + "autodisable": "autodisable", + "autoskip": "autoskip", + "newblacklisted": "\/me [@%%NAME%%] Lagu ini berada dalam %%BLACKLIST%% blacklist! [ %%AUTHOR%% - %%TITLE%% - %%MID%% ]", + "blinfo": "[@%%NAME%%] Maklumat Blacklist - Artis: %%AUTHOR%%, Tajuk: %%TITLE%%, mid: %%SONGID%%", + "blacklist": "blacklist", + "cycleguard": "Pengawal Kitaran", + "timeguard": "Pengawal Masa", + "chatfilter": "Penapis Chat", + "historyskip": "Sejarah Lagu Melangkau", + "lockdown": "Kuncian", + "lockguard": "Pengawal Kunci", + "usercommands": "Perintah Pengguna", + "motd": "MotD", + "welcomemsg": "Mesej Sambutan", + "songstats": "Statistik Lagu", + "etarestriction": "Sekatan eta", + "voteskip": "Undi Melangkau", + "voteskiplimit": "\/me [@%%NAME%%] Undi Melangkau sekarang ditetap pada %%LIMIT%% meh.", + "voteskipexceededlimit": "\/me @%%NAME%%, lagu anda telah melebihi had undi melangkau (%%LIMIT%% meh).", + "voteskipinvalidlimit": "\/me [@%%NAME%%] Had undi melangkau tidak sah, sila cuba lagi mengunakan nombor untuk menandakan bilangan meh.", + "voteskipsetlimit": "\/me [@%%NAME%%] Undi melangkau ditetapkan ke %%LIMIT%%.", + "activeusersintime": "\/me [@%%NAME%%] Terdapat %%AMOUNT%% pengguna yang chat pada masa %%TIME%% minit yang lalu.", + "maximumafktimeset": "\/me [@%%NAME%%] Tempoh afk maksimum ditetapkan ke %%TIME%% minit.", + "afkstatusreset": "\/me [@%%NAME%%] Menetapkan semula status afk @%%USERNAME%%.", + "inactivefor": "\/me [@%%NAME%%] @%%USERNAME%% telah tidak aktif untuk %%TIME%%.", + "inactivelonger": "\/me [@%%NAME%%] @%%USERNAME%% telah tidak aktif lebih lama dari %%BOTNAME%% berada dalam talian.", + "autowoot": "\/me Kami mengesyorkan PlugCubed untuk autowooting: http:\/\/plugcubed.net\/", + "brandambassador": "\/me Brand Ambassador adalah suara pengguna di plug.dj. Mereka mempromosikan event, melibatkan komuniti dan berkongsi mesej plug.dj di seluruh dunia. Untuk Maklumat lebih lanjut: https:\/\/plug.dj\/ba", + "bouncerplusrank": "\/me [@%%NAME%%] Anda mesti adalah Manager atau lebih tinggi dari Bouncer +.", + "chatcleared": "\/me [@%%NAME%%] Membersihkan chat.", + "deletechat": "\/me [@%%NAME%%] Membersihkan chat dari %%USERNAME%%.", + "commandslink": "\/me %%BOTNAME%% Perintah: %%LINK%%", + "eatcookie": "\/me makan cookie.", + "nousercookie": "\/em tidak melihat %%NAME%% dalam bilik dan makan cookie sendiri.", + "selfcookie": "\/me @%%NAME%%, anda ada sikit tamak, bukankah? Memberi cookie untuk diri sendiru, bah. Berkongsilah sikit dengan orang lain!", + "cookie": "\/me @%%NAMETO%%, %%NAMEFROM%% %%COOKIE%%", + "cycleguardtime": "\/me [@%%NAME%%] Pengawal kitaran telah ditetapkan ke %%TIME%% minit.", + "dclookuprank": "\/me [@%%NAME%%] Hanya Bouncer dan pangkat lebih tinggi boleh melakukan lookup untuk orang lain.", + "emojilist": "\/me Senarai Emoji: %%LINK%%", + "notinwaitlist": "\/me @%%NAME%%, anda tidak berada dalam senarai menunggu.", + "youarenext": "\/me @%%NAME%%, anda adalah DJ selepas lagu ini.", + "youaredj": "\/me @%%NAME%%, anda sekarang tengah DJ.", + "eta": "\/me @%%NAME%%, anda berada pada kedudukan %%POSITION%% dalam senarai menunggu dan akan mencapai pada booth dalam masa lebih kurang %%TIME%%.", + "facebook": "\/me Like kami di facebook: %%LINK%%", + "starterhelp": "\/me Imej ini akan menunjukkan anda macam mana bermula di plug: %%LINK%%", + "roulettejoin": "@%%NAME%% menyertai roulette! (!leave jika anda menyesal)", + "jointime": "\/me [@%%NAMEFROM%%] @%%USERNAME%% telah berada dalam bilik selama %%TIME%%.", + "kickrank": "\/me [@%%NAME%%] anda tidak boleh menendang pengguna dengan pangkat yang sama atau lebih tinggi daripada anda!", + "kick": "\/me [@%%NAME%%], @%%USERNAME%% anda telah ditendang dari komuniti untuk masa %%TIME%% minit.", + "kill": "\/me Menutup.", + "logout": "\/me [@%%NAME%%] Log keluar %%BOTNAME%%", + "rouletteleave": "\/me @%%NAME%% meninggalkan roulette!", + "songlink": "\/me [@%%NAME%%] Pautan ke lagu semasa: %%LINK%%", + "usedlockskip": "\/me [%%NAME%% telah menggunakan lockskip]", + "usedskip": "\/me [%%NAME%% telah menggunakan langkau]", + "skippos": "\/me [@%%NAME%%] DJ sekarang akan dipindahkan ke kedudukan %%POSITION%% apabila lagunya dilangkau.", + "lockguardtime": "\/me [@%%NAME%%] Lockguard sekarang set kepada %%TIME%% minit(s).", + "maxlengthtime": "\/me [@%%NAME%%] Maksimum tempoh lagu ditetapkan ke %%TIME%% minit.", + "motdset": "\/me MotD ditetapkan ke: %%MSG%%", + "motdintervalset": "\/me MotD Selang ditetapkan ke %%INTERVAL%%.", + "currentbotname": "\/me Nama bot sekarang ditetapkan ke: %%BOTNAME%%", + "botnameset": "\/me Nama bot sekarang akan ditetapkan ke: %%BOTNAME%%", + "addbotwaitlist": "\/me @%%NAME%%, sila jangan cuba untuk menambahkan saya ke dalam senarai menunggu.", + "move": "\/me [%%NAME%% telah menggunakan Pindah]", + "mutednotime": "\/me [@%%NAME%%] Membisukan @%%USERNAME%%.", + "mutedmaxtime": "\/me [@%%NAME%%] Anda hanya boleh membisukan untuk maksimum %%TIME%% minit.", + "mutedtime": "\/me [@%%NAME%%] Membisukan @%%USERNAME%% untuk %%TIME%% minit.", + "unmuted": "\/me [@%%NAME%%] Batalkan Bisu @%%USERNAME%%.", + "muterank": "\/me [@%%NAME%%] Anda tidak boleh membisukan orang dengan pangkat yang sama atau lebih tinggi daripada anda.", + "oplist": "\/me Senarai OP: %%LINK%%", + "pong": "\/me Pong!", + "reload": "\/me Akan kembali secepat mungkin.", + "removenotinwl": "\/me [@%%NAME%%] Pengguna dinyatakan @%%USERNAME%% tidak berada dalam senarai menunggu.", + "roomrules": "\/me Sila mendapatkan peraturan bilik disini: %%LINK%%", + "sessionstats": "\/me [@%%NAME%%] Jumlah woot: %%WOOTS%%, Jumlah meh: %%MEHS%%, Jumlah Koleksi:%%GRABS%%.", + "forceskip": "\/me [%%NAME%% telah menggunakan Memaksa Melangkau]", + "madeby": "\/me bot ini dibuat oleh %%NAME%%.", + "activefor": "Saya telah aktif untuk %%TIME%%.", + "swapinvalid": "\/me [@%%NAME%%] Pengguna dinyatakan tidak sah. (Tiada nama dengan ruang jarak!)", + "swapwlonly": "\/me [@%%NAME%%] Sila menukar kedudukan dengan pengguna yang berada dalam senari menunggu sahaja!", + "swapping": "\/me Menukar kedudukan %%NAME1%% dengan %%NAME2%%.", + "genres": "\/me Sila semak genre dalam bilik yang diizinkan disini: %%LINK%%", + "notbanned": "\/me [@%%NAME%%] Pengguna ini tidak dilarang.", + "unmutedeveryone": "\/me [@%%NAME%%] Batalkan Bisu setiap orang.", + "unmuteeveryonerank": "\/me [@%%NAME%%] Hanya Manager and pangkat yang lebih tinggi boleh membatalkan bisu setiap orang sekaligus.", + "notmuted": "\/me [@%%NAME%%] pengguna itu tidak dibisukan.", + "unmuterank": "\/me [@%%NAME%%] Anda tidak boleh batal bisu orang dengan pangkat yang sama atau lebih tinggi daripada anda.", + "commandscd": "\/me [@%%NAME%%] Selang masa untuk perintah dari pengguna sekarang ditetapkan ke %%TIME%% saat.", + "voteratio": "\/me [@%%NAME%%] @%%USERNAME%% ~ woot: %%WOOT%%, meh: %%MEHS%%, nisbah (w\/m): %%RATIO%%.", + "website": "\/me Sila layari laman web kami: %%LINK%%", + "youtube": "\/me [%%NAME%%] Subscribe kami di youtube: %%LINK%%", + "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%W\/%%GRABS%%G\/%%MEHS%%M.", + "thorNotClose": "\/me @%%NAME%%, you're not worthy of getting close to the hammer!", + "thorcd": "\/me @%%NAME%% you can try to lift the hammer in %%TIME%% minutes.", + "thorWorthy": "\/me @%%NAME%% you're worthy of the hammer :hammer:, congratulations!", + "thorNotWorthy": "\/me @%%NAME%% you're not worthy of the hammer." +} diff --git a/lang/nl.json b/lang/nl.json old mode 100644 new mode 100755 index 4e6496ac..6444b4ab --- a/lang/nl.json +++ b/lang/nl.json @@ -11,28 +11,28 @@ "geeft je een gelukskoekje. Het luidt \"Neem een risico!\"", "geeft je een gelukskoekje. Het luidt \"Ga naar buiten.\"", "geeft je een gelukskoekje. Het luidt \"Vergeet je groentjes niet op te eten!\"", - "gives you a fortune cookie. It reads \"Do you even lift?\"", + "geeft je een gelukskoekje. Het luidt \"Do you even lift?\"", "geeft je een gelukskoekje. Het luidt \"m808 pls\"", - "gives you a fortune cookie. It reads \"If you move your hips, you'll get all the ladies.\"", - "gives you a fortune cookie. It reads \"I love you.\"", - "gives you a Golden Cookie. You can't eat it because it is made of gold. Dammit.", - "gives you an Oreo cookie with a glass of milk!", - "gives you a rainbow cookie made with love :heart:", - "gives you an old cookie that was left out in the rain, it's moldy.", - "bakes you fresh cookies, it smells amazing." + "geeft je een gelukskoekje. Het luidt \"Als je met je heupen schud, zul je al je vrouwtjes krijgen.\"", + "geeft je een gelukskoekje. Het luidt \"Ik hou van jou.\"", + "geeft je een gouden koekje. Je kan het niet eten want hij is van goud. Verdomme.", + "geeft je een Oreo met een glas melk!", + "geeft je een regenboog koekje gemaakt met liefde :heart:", + "geeft je een oud koekje die in de regen heeft gelegen, het is schimmelig.", + "bakt verse koekjes voor je, het ruikt geweldig." ], "balls": [ - "Signs point to yes.", + "Lijkt er op van wel.", "Ja.", - "Reply hazy, try again.", - "Without a doubt.", + "Reactie wazig, probeer opnieuw.", + "Zonder twijfel.", "Mijn bronnen zeggen van niet.", - "As I see it, yes.", + "Zoals ik het zie, ja.", "Daar kan je op rekenen.", "Concentreer je en vraag het opnieuw.", - "Outlook not so good.", - "It is decidedly so.", - "Better not tell you now.", + "Ziet er niet goed uit.", + "Het is besloten.", + "Beter als ik het je later vertel.", "Heel twijfelachtig.", "Ja, zeker.", "Het is zeker.", @@ -40,21 +40,20 @@ "Waarschijnlijk.", "Vraag het later opnieuw.", "Mijn antwoord is nee.", - "Outlook good.", + "Ziet er goed uit.", "Reken er niet op.", - "Yes, in due time.", - "Mijn bronnen zeggen nee.", + "Ja, als de tijd rijp is.", + "Zeker niet.", "Zeker niet.", "Je zult moeten wachten.", "Ik heb mijn twijfels.", - "Outlook so so.", + "Ziet er goed uit voor mij!", "Dat vind ik er goed uit zien.", "Wie weet?", "Ziet er goed uit!", "Waarschijnlijk.", - "Are you kidding?", - "Don't bet on it.", - "Forget about it." + "Ik zou er niet op rekenen.", + "Vergeet het maar." ], "nodatafound": "Geen vorige data gevonden.", "currentlang": "\/me De taal is momenteel ingesteld op: %%LANGUAGE%%", @@ -68,7 +67,7 @@ "welcome": "\/me Welkom %%NAME%%", "welcomeback": "\/me Welkom terug, %%NAME%%", "songknown": "\/me @%%NAME%%, Dit lied staat in de DJ geschiedenis.", - "notavailable": "\/me @%%NAME%%, the song you played was not available.", + "notavailable": "\/me @%%NAME%%, het liedje dat je speelde was niet aanwezig", "timelimit": "\/me @%%NAME%%, jouw lied is langer dan %%MAXLENGTH%% minuten, je hebt toestemming nodig om langere liedjes te spelen.", "permissionownsong": "\/me :up: @%%NAME%% heeft toestemming om hun eigen productie te spelen!", "isblacklisted": "\/me Dit liedje staat op de %%BLACKLIST%% blacklist! Overslaan...", @@ -92,9 +91,9 @@ "spam": "\/me @%%NAME%%, spam alsjeblieft niet.", "roomadvertising": "\/me @%%NAME%%, link alsjeblieft geen andere gemeenschappen.", "adfly": "\/me @%%NAME%%, verander alsjeblieft je autowoot programma. Wij raden PlugCubed aan: http:\/\/plugcubed.net\/", - "validgiftags": "\/me [@%%NAME%%] http:\/\/media.giphy.com\/media\/%%ID%%\/giphy.gif [Tags: %%TAGS%%]", - "invalidgiftags": "\/me [@%%NAME%%] Ongeldige tags, probeer iets anders. [Tags: %%TAGS%%]", - "validgifrandom": "\/me [@%%NAME%%] http:\/\/media.giphy.com\/media\/%%ID%%\/giphy.gif [Willekeurige GIF]", + "validgiftags": "/me [@%%NAME%%] [Tags: %%TAGS%%] http://i.giphy.com/%%ID%%.gif", + "invalidgiftags": "/me [@%%NAME%%] [Tags: %%TAGS%%] Ongeldige tags, probeer iets anders.", + "validgifrandom": "/me [@%%NAME%%] [Willekeurige GIF] http://i.giphy.com/%%ID%%.gif", "invalidgifrandom": "\/me [@%%NAME%%] Ongeldig verzoek, probeer het opnieuw.", "invalidtime": "\/me [@%%NAME%%] Ongeldige tijd opgegeven.", "nouserspecified": "\/me [@%%NAME%%] Geen gebruiker gespecificeerd.", @@ -152,8 +151,8 @@ "dclookuprank": "\/me [@%%NAME%%] Alleen bouncers of hogere ranking kunnen iets opzoeken voor anderen.", "emojilist": "\/me Lijst met Emoji's: %%LINK%%", "notinwaitlist": "\/me @%%NAME%%, je bent niet in de wachtlijst.", - "youarenext": "\/me @%%NAME%%, you are DJing after this song.", - "youaredj": "\/me @%%NAME%%, you are currently DJing.", + "youarenext": "\/me @%%NAME%%, jij dj't na dit nummer", + "youaredj": "\/me @%%NAME%%, je bent momenteel aan het draaien", "eta": "\/me @%%NAME%% je zal de booth bereiken in ongeveer %%TIME%%.", "facebook": "\/me Like ons op facebook: %%LINK%%", "starterhelp": "\/me Deze afbeelding zal je op weg helpen op plug: %%LINK%%", @@ -166,14 +165,14 @@ "rouletteleave": "\/me @%%NAME%% heeft de roulette verlaten!", "songlink": "\/me [@%%NAME%%] Link naar het huidige nummer: %%LINK%%", "usedlockskip": "\/me [%%NAME%% gebruikte lockskip.]", - "usedskip": "\/me [%%NAME%% used skip]", - "skippos": "\/me [@%%NAME%%] DJs will now be moved to position %%POSITION%% when skipped.", + "usedskip": "\/me [%%NAME%% gebruikte \"overslaan\"]", + "skippos": "\/me [@%%NAME%%] DJs zullen nu naar positie %%POSITION%% worden gezet als ze worden overgeslagen.", "lockguardtime": "\/me [@%%NAME%%] De lockguard is ingesteld op %%TIME%% minuten.", "maxlengthtime": "\/me [@%%NAME%%] De maximum lengte van een nummer is ingesteld op %%TIME%% minuten.", "motdset": "\/me MotD ingesteld op: %%MSG%%", "motdintervalset": "\/me MotD interval ingesteld op %%INTERVAL%%.", - "currentbotname": "\/me Bot name currently set to: %%BOTNAME%%", - "botnameset": "\/me Bot name now set to: %%BOTNAME%%", + "currentbotname": "\/me Bot naam is momenteel: %%BOTNAME%%", + "botnameset": "\/me Bot naam is vanaf nu: %%BOTNAME%%", "addbotwaitlist": "\/me @%%NAME%%, probeer mij niet toe te voegen aan de wachtlijst, alsjeblieft.", "move": "\/me [%%NAME%% gebruikte move.]", "mutednotime": "\/me [@%%NAME%%] Heeft @%%USERNAME%% gemute.", @@ -187,7 +186,7 @@ "removenotinwl": "\/me [@%%NAME%%] Opgegeven gebruiker @%%USERNAME%% is niet in de wachtlijst.", "roomrules": "\/me Je kan onze regels hier vinden: %%LINK%%", "sessionstats": "\/me [@%%NAME%%] Totaal aantal woots: %%WOOTS%%, totaal aantal mehs: %%MEHS%%, totaal aantal grabs: %%GRABS%%.", - "forceskip": "\/me [%%NAME%% used forceskip]", + "forceskip": "\/me [%%NAME%% gebruikte \"geforceerd overslaan\"]", "madeby": "\/me Deze bot is gemaakt door %%NAME%%.", "activefor": "Ik ben al %%TIME%% actief.", "swapinvalid": "\/me [@%%NAME%%] Ongeldige gebruiker gespecificeerd. (Geen namen met spaties!)", @@ -203,5 +202,9 @@ "voteratio": "\/me [@%%NAME%%] @%%USERNAME%% ~ woots: %%WOOT%%, mehs: %%MEHS%%, verhouding (w\/m): %%RATIO%%.", "website": "\/me Bezoek onze website alsjeblieft: %%LINK%%", "youtube": "\/me [%%NAME%%] Abonneer op ons kanaal op YouTube: %%LINK%%", - "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%W\/%%GRABS%%G\/%%MEHS%%M." -} \ No newline at end of file + "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%W\/%%GRABS%%G\/%%MEHS%%M.", + "thorNotClose": "\/me @%%NAME%%, you're not worthy of getting close to the hammer!", + "thorcd": "\/me @%%NAME%% you can try to lift the hammer in %%TIME%% minutes.", + "thorWorthy": "\/me @%%NAME%% you're worthy of the hammer :hammer:, congratulations!", + "thorNotWorthy": "\/me @%%NAME%% you're not worthy of the hammer." +} diff --git a/lang/pl.json b/lang/pl.json new file mode 100755 index 00000000..21e29cf0 --- /dev/null +++ b/lang/pl.json @@ -0,0 +1,210 @@ +{ + "cookies": [ + "da\u0142 ci ciasteczko z kawa\u0142kami czekolady!", + "da\u0142 ci mi\u0119kkie owsiane ciasteczka domowej roboty!", + "dał ci stare, wyschłe ciastko. Było ostatnie w pudełku. Obrzydlistwo.", + "daje Ci cukrowe ciastko. Co? Bez lukru i posypki??", + "daje Ci ciasteczko z kawa\u0142kami czekolady. Oh czekaj, to s\u0105 rodzynki. Bleee...", + "daje Ci ogromne ciastko. Zaczepia Ci\u0119 i wr\u0119cza Ci wi\u0119cej ciastek. Dziwne...", + "daje Ci ciastko z wr\u00f3\u017cb\u0105, kt\u00f3ra brzmi \"Dlaczego nie pracujesz nad \u017cadnym projektem?\"", + "daje Ci ciastko z wróżbą, która brzmi \"Powiedz komplement ważnej dla Ciebie osobie\".", + "daje Ci ciastko z wr\u00f3\u017cb\u0105, kt\u00f3ra brzmi \"Podejmij ryzyko\".", + "daje Ci ciastko z wr\u00f3\u017cb\u0105, kt\u00f3ra brzmi \"Wyjd\u017a na zewn\u0105trz\".", + "daje Ci ciastko z wr\u00f3\u017cb\u0105, kt\u00f3ra brzmi \"Nie zapomnij zje\u015b\u0107 swoich warzyw\".", + "daje Ci ciastko z wróżbą, która brzmi \"Czy Ty w ogóle ćwiczysz?\"", + "daje Ci ciastko z wr\u00f3\u017cb\u0105, kt\u00f3ra brzmi \"m808 pls\"", + "daje Ci ciastko z wr\u00f3\u017cb\u0105, kt\u00f3ra brzmi \"je\u015bli we\u017amiesz si\u0119 za siebie wszystkie laski b\u0119d\u0105 Twoje\".", + "daje Ci ciastko z wr\u00f3\u017cb\u0105, w kt\u00f3rej jest napisane \"kocham Ci\u0119\".", + "daje Ci złote ciasteczko. Nie możesz go zjeść, bo jest ze złota. Cholera!", + "daje Ci ciastko Oreo ze szklank\u0105 mleka!", + "daje Ci t\u0119czowe ciastko robione z mi\u0142o\u015bci\u0105 :hearth:", + "daje Ci stare, zgniłe ciastko, które zostało zabrane z deszczu.", + "piecze dla Ciebie \u015bwie\u017ce ciastka, pachn\u0105 niesamowicie." + ], + "balls": [ + "Znaki wskazuj\u0105 na tak.", + "Tak.", + "Nie widzę odpowiedzi, spróbuj ponownie.", + "Bez w\u0105tpienia.", + "Moje źródła mówią: nie.", + "Moim zdaniem, tak.", + "Można na tym polegać.", + "Pomy\u015bl i zapytaj ponownie.", + "To nie wygląda za dobrze.", + "Zdecydowanie tak.", + "Lepiej Ci teraz tego nie mówić.", + "Bardzo w\u0105tpliwe.", + "Tak, definitywnie.", + "To jest pewne.", + "Nie można tego teraz przewidzieć.", + "Najprawdopodobniej.", + "Spytaj ponownie p\u00f3\u017aniej.", + "Moja odpowiedź brzmi: nie.", + "Wygl\u0105da dobrze.", + "Nie licz na to.", + "Tak, w odpowiednim czasie.", + "Definitywnie nie.", + "B\u0119dziesz musia\u0142 zaczeka\u0107.", + "Mam w\u0105tpliwo\u015bci.", + "Wygl\u0105da ca\u0142kiem ca\u0142kiem.", + "Na mój gust wygląda dobrze.", + "Kto wie?", + "Wygl\u0105da dobrze!", + "Mo\u017cliwe.", + "\u017bartujesz sobie?", + "Nie stawiaj na to.", + "Zapomnij o tym." + ], + "nodatafound": "Nie znaleziono poprzednich danych.", + "currentlang": "/me Ustawiony język: %%LANGUAGE%%", + "langerror": "/me Wybrany język nie jest dostępny. Lista dostępnych języków: %%LINK%%", + "langset": "/me Język ustawiono na: %%LANGUAGE%%", + "retrievingdata": "Przywracanie poprzednio zapisanych danych.", + "datarestored": "Poprzednio zapisane dane odzyskane z powodzeniem.", + "greyuser": "Tylko bramkarze wzwyż mogą uruchomić bota.", + "bouncer": "Bot nie może przenosić ludzi w kolejce, gdy jest uruchomiony jako bramkarz.", + "online": "\/me %%BOTNAME%% v%%VERSION%% online!", + "welcome": "\/me Witaj %%NAME%%", + "welcomeback": "\/me Witaj ponownie, %%NAME%%", + "songknown": "\/me @%%NAME%%, utw\u00f3r jest w historii.", + "notavailable": "/me @%%NAME%%, utwór nie był dostępny.", + "timelimit": "/me @%%NAME%%, wybrany utwór jest dłuższy niż %%MAXLENGTH%% minut(y), potrzebujesz zgody na puszczanie dłuższych piosenek.", + "permissionownsong": "/me :up: @%%NAME%% posiada uprawnienia aby grać swoje własne produkcje!", + "isblacklisted": "/me Utwór znajduje się na liście %%BLACKLIST%%. Pomijam...", + "isopen": "/me Ruletka włączona! Wpisz !join aby dołączyć! (Wylosowana osoba zostanie przeniesiona na losowe miejsce w kolejce)", + "winnerpicked": "\/me Zwyci\u0119zca zosta\u0142 wybrany! @%%NAME%% przeniesiony na pozycj\u0119 %%POSITION%%.", + "ball": "/me %%NAME%% zapytał: \"%%QUESTION%%\", odpowiedzią %%BOTNAME%% jest: \"%%RESPONSE%%\"", + "notghosting": "[%%NAME1%%] %%NAME2%% nie ghostuje.", + "ghosting": "[%%NAME1%%] %%NAME2%% albo ghostuje, albo nie jest dostępny w społeczności.", + "alreadyadding": "/me Użytkownik jest już dodawany! Zmieniono pożądaną pozycję na: %%POSITION%%.", + "adding": "\/me Dodano @%%NAME%% do kolejki. Aktualna kolejka: %%POSITION%%.", + "usernotfound": "\/me U\u017cytkownik nie zosta\u0142 znaleziony.", + "notdisconnected": "/me @%%NAME%% nie rozłączył(a) się od kiedy tu jestem.", + "noposition": "/me Ostatnia pozycja nie jest znana. Lista oczekiwania musiała zostać zaktualizowana co najmniej raz od zarejestrowania ostatniej pozycji użytkownika.", + "toolongago": "\/me @%%NAME%%'s twoje ostanie roz\u0142\u0105czenie (DC lub wyj\u015bcie) by\u0142o zbyt dawno temu: %%TIME%%.", + "valid": "/me Użytkownik @%%NAME%% rozłączył się %%TIME%% temu i powinien być na pozycji %%POSITION%%.", + "warning1": "\/me @%%NAME%%, jeste\u015b afk od %%TIME%%, prosz\u0119 odpowiedz w ci\u0105gu 2 minut albo zostaniesz usuni\u0119ty z listy oczekiwania.", + "warning2": "/me @%%NAME%%, zostaniesz usunięty z listy oczekiwania za bycie afk, jeśli wkrótce nie odpowiesz.", + "afkremove": "\/me @%%NAME%%, zosta\u0142e\u015b usuni\u0119ty z listy oczekiwania za bycie afk od %%TIME%%. By\u0142e\u015b na pozycji %%POSITION%%. Czatuj co najmniej raz na %%MAXIMUMAFK%% minut je\u015bli chcesz puszcza\u0107 piosenki.", + "caps": "/me @%%NAME%%, wyłącz capslock'a.", + "askskip": "/me @%%NAME%%, nie proś o skipy.", + "spam": "\/me @%%NAME%%, nie spamuj.", + "roomadvertising": "\/me @%%NAME%%, nie podawaj link\u00f3w do innych spo\u0142eczno\u015bci.", + "adfly": "\/me @%%NAME%%, zmie\u0144 sw\u00f3j program do autowoot\u00f3w. Polecamy PlugCubed: http:\/\/plugcubed.net\/", + "validgiftags": "/me [@%%NAME%%] [Tagi: %%TAGS%%] http://i.giphy.com/%%ID%%.gif", + "invalidgiftags": "/me [@%%NAME%%] [Tagi: %%TAGS%%] Błędne tagi, spróbuj innych.", + "validgifrandom": "/me [@%%NAME%%] [Losowy GIF] http://i.giphy.com/%%ID%%.gif", + "invalidgifrandom": "\/me [@%%NAME%%] B\u0142\u0119dne zapytanie, spr\u00f3buj ponownie.", + "invalidtime": "/me [@%%NAME%%] Błędnie podany czas.", + "nouserspecified": "\/me [@%%NAME%%] Nie wybrano u\u017cytkownika.", + "invaliduserspecified": "\/me [@%%NAME%%] Nieprawid\u0142owy u\u017cytkownik.", + "nolistspecified": "\/me [@%%NAME%%] Nie wybrano listy.", + "invalidlistspecified": "\/me [@%%NAME%%] Wybrano nieprawid\u0142ow\u0105 list\u0119.", + "novaliduserspecified": "\/me [@%%NAME%%] Nie wybrano prawid\u0142owego u\u017cytkownika.", + "nolimitspecified": "\/me [@%%NAME%%] Nie okre\u015blono limitu.", + "invalidlimitspecified": "\/me [@%%NAME%%] Niepoprawny czas.", + "invalidpositionspecified": "\/me [@%%NAME%%] Wybrano nieprawid\u0142ow\u0105 pozycj\u0119.", + "whois": "/me [%%NAME1%%] Nazwa użytkownika %%NAME2%%, ID: %%ID%%, Ranga: %%RANK%%, Dołączył: %%JOINED%%, Poziom: %%LEVEL%%, Język: %%LANGUAGE%%, Awatar: %%AVATAR%%, Profil: %%PROFILE%%", + "toggleon": "/me [@%%NAME%%] %%FUNCTION%% włączono.", + "toggleoff": "/me [@%%NAME%%] %%FUNCTION%% wyłączono.", + "cmddeletion": "usuwanie komend", + "afkremoval": "Usuwanie AFK'ów", + "afksremoved": "Usuniętych AFK", + "afklimit": "Limit AFK", + "autodisable": "autowy\u0142\u0105czanie", + "autoskip": "autopomijanie", + "newblacklisted": "/me [@%%NAME%%] Utwór znajduje się na liście %%BLACKLIST%%! [ %%AUTHOR%% - %%TITLE%% - %%MID%% ]", + "blinfo": "[@%%NAME%%] Zbanowany utwór - autor: %%AUTHOR%%, tytuł: %%TITLE%%, mid: %%SONGID%%", + "blacklist": "czarna lista", + "cycleguard": "strażnik cyklu", + "timeguard": "strażnik czasu", + "chatfilter": "filtr czatu", + "historyskip": "pomijanie utworów z historii", + "lockdown": "zablokowane", + "lockguard": "strażnik blokady", + "usercommands": "komendy użytkowników", + "motd": "wiadomość dnia", + "welcomemsg": "wiadomo\u015b\u0107 powitalna", + "songstats": "statystyki utworów", + "etarestriction": "ograniczenie eta", + "voteskip": "głos za pominięciem", + "voteskiplimit": "\/me [@%%NAME%%] Limit g\u0142os\u00f3w za pomini\u0119ciem jest aktualnie ustawiony na %%LIMIT%% meh\u00f3w.", + "voteskipexceededlimit": "\/me @%%NAME%%, tw\u00f3j utw\u00f3r osi\u0105gn\u0105\u0142 limit g\u0142os\u00f3w za pomini\u0119ciem (%%LIMIT%% meh\u00f3w).", + "voteskipinvalidlimit": "/me [@%%NAME%%] Błędny limit głosów za pominięciem, spróbuj ponownie, używając liczb, które mają oznaczać ilość mehów.", + "voteskipsetlimit": "\/me [@%%NAME%%] Limit g\u0142os\u00f3w za pomini\u0119ciem ustawiony na %%LIMIT%%.", + "activeusersintime": "/me [@%%NAME%%] W ciągu ostatnich %%TIME%% minut, %%AMOUNT%% użytkowników czatowało.", + "maximumafktimeset": "\/me [@%%NAME%%] Maksymalny czas bycia afk ustawiony na %%TIME%% minut.", + "afkstatusreset": "/me [@%%NAME%%] Zresetował czas bycia afk użytkownika @%%USERNAME%%.", + "inactivefor": "\/me [@%%NAME%%] @%%USERNAME%% jest nieaktywny od %%TIME%%.", + "inactivelonger": "\/me [@%%NAME%%] @%%USERNAME%% jest d\u0142u\u017cej nieaktywny ni\u017c %%BOTNAME%% jest online.", + "autowoot": "\/me Zalecamy PlugCubed dla automatycznego wootowania utwor\u00f3w http:\/\/plugcubed.net\/", + "brandambassador": "\/me Ambasadorzy marki s\u0105 g\u0142osem przewodnim u\u017cytkownik\u00f3w plug.dj. Promuj\u0105 wydarzenia, anga\u017cuj\u0105 si\u0119 w spo\u0142eczno\u015bci i dziel\u0105 si\u0119 wiadomo\u015bciami o plug.dj na ca\u0142ym \u015bwiecie. Aby uzyska\u0107 wi\u0119cej informacji odwied\u017a: https:\/\/plug.dj\/ba", + "bouncerplusrank": "/me [@%%NAME%%] Musisz być co najmniej menedżerem aby uruchomić Bouncer+.", + "chatcleared": "\/me [@%%NAME%%] Wyczy\u015bci\u0142 czat.", + "deletechat": "\/me [@%%NAME%%] Wyczy\u015bci\u0142 czat z wiadomo\u015bci u\u017cytkownika %%USERNAME%%.", + "commandslink": "\/me %%BOTNAME%% komendy: %%LINK%%", + "eatcookie": "\/me zjada ciasteczko.", + "nousercookie": "\/em Nie widz\u0119 %%NAME%% w spo\u0142eczno\u015bci, wi\u0119c zjem jego ciastko.", + "selfcookie": "/me @%%NAME%%, nie sądzisz, że jesteś trochę chciwy? Dawanie ciastek samemu sobie... Podziel się trochę z innymi!", + "cookie": "\/me @%%NAMETO%%, %%NAMEFROM%% %%COOKIE%%", + "cycleguardtime": "\/me [@%%NAME%%] Stra\u017cnik cyklu jest ustawiony na %%TIME%% minut.", + "dclookuprank": "\/me [@%%NAME%%] Tylko bramkarze wzwy\u017c mog\u0105 u\u017cy\u0107 komendy dc dla innych.", + "emojilist": "\/me Lista emotikon: %%LINK%%", + "notinwaitlist": "\/me @%%NAME%%, nie jeste\u015b na li\u015bcie oczekiwania.", + "youarenext": "/me @%%NAME%%, będziesz DJ-em po tym utworze.", + "youaredj": "/me @%%NAME%%, właśnie jesteś DJ-em.", + "eta": "/me @%%NAME%%, jesteś %%POSITION%% na liście oczekiwania i zostaniesz DJ-em za około %%TIME%%.", + "facebook": "\/me Polub nas na facebooku: %%LINK%%", + "starterhelp": "\/me Ten obrazek pomo\u017ce Ci zacz\u0105\u0107 na plugu: %%LINK%%", + "roulettejoin": "@%%NAME%% do\u0142\u0105czy\u0142 do ruletki! (Wpisz !leave je\u017celi chcesz zrezygnowa\u0107).", + "jointime": "\/me [@%%NAMEFROM%%] @%%USERNAME%% jest w spo\u0142eczno\u015bci %%TIME%%.", + "kickrank": "/me [@%%NAME%%] nie możesz użyć opcji \"kick\" na użytkowniku z tą samą lub wyższą rangą niż ty!", + "kick": "\/me [@%%NAME%%], @%%USERNAME%% zosta\u0142e\u015b wyrzucony z spo\u0142eczno\u015bci na %%TIME%% minut.", + "kill": "\/me Wy\u0142\u0105czanie.", + "logout": "\/me [@%%NAME%%] Wylogowa\u0142 %%BOTNAME%%", + "rouletteleave": "/me @%%NAME%% opuścił ruletkę.", + "songlink": "\/me [@%%NAME%%] Link do aktualnej piosenki: %%LINK%%", + "usedlockskip": "/me [%%NAME%% użył lockskip'a]", + "usedskip": "\/me [%%NAME%% pomin\u0105\u0142]", + "skippos": "/me [@%%NAME%%] DJ-e będą teraz po pominięciu przesuwani na pozycję %%POSITION%%.", + "lockguardtime": "/me [@%%NAME%%] Strażnik blokady jest ustawiony %%TIME%% minut.", + "maxlengthtime": "\/me [@%%NAME%%] Maksymalny czas trawania utworu ustawiony na %%TIME%% minut.", + "motdset": "\/me Wiadomo\u015b\u0107 dnia ustawiono na: %%MSG%%", + "motdintervalset": "\/me Wiadomo\u015b\u0107 dnia b\u0119dzie powtarzana co %%INTERVAL%%.", + "currentbotname": "/me Nazwa bota: %%BOTNAME%%", + "botnameset": "/me Nazwa bota zmieniona na: %%BOTNAME%%", + "addbotwaitlist": "/me @%%NAME%%, nie próbuj dodawać mnie do listy oczekiwania.", + "move": "\/me [%%NAME%% przesun\u0105\u0142 w kolejce]", + "mutednotime": "\/me [@%%NAME%%] Wyciszy\u0142 @%%USERNAME%%.", + "mutedmaxtime": "/me [@%%NAME%%] Możesz wyciszyć na maksymalnie %%TIME%% minut.", + "mutedtime": "/me [@%%NAME%%] Wyciszył @%%USERNAME%% na %%TIME%% minut.", + "unmuted": "/me [@%%NAME%%] Wyłączył wyciszenie użytkownika @%%USERNAME%%.", + "muterank": "/me [@%%NAME%%] Nie możesz wyciszyć osoby z taką samą lub wyższą rangą od Ciebie.", + "oplist": "\/me Lista OP: %%LINK%%", + "pong": "\/me Pong!", + "reload": "\/me Zaraz wracam.", + "removenotinwl": "\/me [@%%NAME%%] Wybrany u\u017cytkownik @%%USERNAME%% nie jest na li\u015bcie oczekiwania.", + "roomrules": "/me Regulamin społeczności: %%LINK%%", + "sessionstats": "\/me [@%%NAME%%] Wszystkie wooty: %%WOOTS%%, wszystkie mehy: %%MEHS%%, wszystkie graby: %%GRABS%%.", + "forceskip": "\/me [%%NAME%% u\u017cy\u0142 forceskip]", + "madeby": "\/me Bot zosta\u0142 stworzony przez %%NAME%%.", + "activefor": "Jestem aktywny od %%TIME%%.", + "swapinvalid": "/me [@%%NAME%%] Wybrano nieprawidłowego użytkownika. (Nie dopuszcza się nazw ze spacjami!)", + "swapwlonly": "/me [@%%NAME%%] Zamieniani użytkownicy muszą znajdować się na liście oczekiwania!", + "swapping": "\/me Zamieniam %%NAME1%% z %%NAME2%%.", + "genres": "/me Lista dozwolonych gatunków w społeczności: %%LINK%%", + "notbanned": "\/me [@%%NAME%%] U\u017cytkownik nie by\u0142 zbanowany.", + "unmutedeveryone": "/me [@%%NAME%%] Wyłączył wysieczenie wszystkim użytkownikom.", + "unmuteeveryonerank": "/me [@%%NAME%%] Tylko menedżerowie wzwyż mogą wyłączyć wyciszenie wszystkim użytkownikom.", + "notmuted": "/me [@%%NAME%%] ten użytkownik nie był wyciszony.", + "unmuterank": "/me [@%%NAME%%] Nie możesz wyłączyć wyciszenia użytkownikowi z taką samą lub wyższą rangą niż twoja.", + "commandscd": "\/me [@%%NAME%%] Czas odnowienia komend u\u017cytkownik\u00f3w jest teraz ustawiony na %%TIME%% sekund.", + "voteratio": "\/me [@%%NAME%%] @%%USERNAME%% ~ wooty: %%WOOT%%, mehy: %%MEHS%%, \u015brednia (w\/m): %%RATIO%%.", + "website": "\/me Zapraszamy do odwiedzenia naszej strony internetowej: %%LINK%%", + "youtube": "\/me [%%NAME%%] Subskrybuj nas na youtube: %%LINK%%", + "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%W\/%%GRABS%%G\/%%MEHS%%M.", + "thorNotClose": "\/me @%%NAME%%, nie jeste\u015b godzien aby podej\u015b\u0107 do m\u0142ota!", + "thorcd": "\/me @%%NAME%% mo\u017cesz spr\u00f3bowa\u0107 podnie\u015b\u0107 m\u0142ot za %%TIME%% minut.", + "thorWorthy": "\/me @%%NAME%% jeste\u015b godzien m\u0142ota :hammer:, gratulacje!", + "thorNotWorthy": "\/me @%%NAME%% nie jeste\u015b godzien m\u0142ota." +} diff --git a/lang/pt.json b/lang/pt-BR.json old mode 100644 new mode 100755 similarity index 94% rename from lang/pt.json rename to lang/pt-BR.json index b996001f..87fd9eac --- a/lang/pt.json +++ b/lang/pt-BR.json @@ -43,9 +43,8 @@ "Parece bom.", "N\u00e3o conte com isso.", "Sim, em seu devido tempo.", - "Minhas fontes dizem que n\u00e3o.", "Definitivamente n\u00e3o.", - "Voc\u00ea vai ter que esperar...", + "Voc\u00ea ter\u00e1 que esperar.", "Eu tenho minhas d\u00favidas.", "Um tanto...", "Parece bom para mim!", @@ -54,11 +53,11 @@ "Provavelmente.", "Est\u00e1 brincando?", "N\u00e3o aposte nisso.", - "Esque\u00e7a..." + "Esque\u00e7a isso." ], "nodatafound": "Dados anteriores n\u00e3o encontrados.", "currentlang": "\/me Idioma definido: %%LANGUAGE%%", - "langerror": "\/me O idioma que voc\u00ea selecionou n\u00e3o est\u00e1 dispon\u00edvel. Por favor, visite %%LINK%% para encontrar uma lista de idiomas dispon\u00edveis.", + "langerror": "/me O idioma que você selecionou não está disponível. Liste de idiomas disponíveis: %%LINK%%", "langset": "\/me Idioma definido para: %%LANGUAGE%%", "retrievingdata": "Recuperando dados armazenados anteriormente.", "datarestored": "Dados armazenados anteriormente recuperados com \u00eaxito.", @@ -92,9 +91,9 @@ "spam": "\/me @%%NAME%%, n\u00e3o fa\u00e7a spam, por favor.", "roomadvertising": "@%%NAME%%, n\u00e3o poste link de outras comunidades, por favor.", "adfly": "@%%NAME%%, por favor mude seu script autowoot. N\u00f3s sugerimos plugCubed: http:\/\/plugcubed.net\/", - "validgiftags": "\/me [@%%NAME%%] http:\/\/media.giphy.com\/media\/%%ID%%\/giphy.gif [Tags: %%TAGS%%]", - "invalidgiftags": "\/me [@%%NAME%%] Tag inv\u00e1lida, tente algo diferente. [Tags: %%TAGS%%]", - "validgifrandom": "\/me [@%%NAME%%] http:\/\/media.giphy.com\/media\/%%ID%%\/giphy.gif [GIF rand\u00f4mica]", + "validgiftags": "/me [@%%NAME%%] [Tags: %%TAGS%%] http://i.giphy.com/%%ID%%.gif", + "invalidgiftags": "/me [@%%NAME%%] [Tags: %%TAGS%%] Tag inválida, tente algo diferente.", + "validgifrandom": "/me [@%%NAME%%] [GIF randômica] http://media.giphy.com/media/%%ID%%/giphy.gif", "invalidgifrandom": "\/me [@%%NAME%%] Inst\u00e2ncia inv\u00e1lida, tente novamente.", "invalidtime": "\/me [@%%NAME%%] Tempo inv\u00e1lido.", "nouserspecified": "\/me [@%%NAME%%] Usu\u00e1rio n\u00e3o especificado.", @@ -203,5 +202,9 @@ "voteratio": "\/me [@%%NAME%%] @%%USERNAME%% ~ woots: %%WOOT%%, mehs: %%MEHS%%, taxa\/propor\u00e7\u00e3o (w\/m): %%RATIO%%.", "website": "\/me Visite nosso site: %%LINK%%", "youtube": "\/me [%%NAME%%] Inscreva-se no nosso canal: %%LINK%%", - "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%W\/%%GRABS%%G\/%%MEHS%%M." -} \ No newline at end of file + "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%W\/%%GRABS%%G\/%%MEHS%%M.", + "thorNotClose": "\/me @%%NAME%% voc\u00ea n\u00e3o \u00e9 d\u00edgno nem de chegar perto do martelo!", + "thorcd": "\/me @%%NAME%% voc\u00ea pode tentar levantar o martelo em %%TIME%% minutos.", + "thorWorthy": "\/me @%%NAME%% voc\u00ea \u00e9 d\u00edgno do martelo :hammer:. Parab\u00e9ns!", + "thorNotWorthy": "\/me @%%NAME%% voc\u00ea n\u00e3o \u00e9 d\u00edgno do martelo." +} diff --git a/lang/sr.json b/lang/sr.json old mode 100644 new mode 100755 index e3916676..111230f9 --- a/lang/sr.json +++ b/lang/sr.json @@ -1,18 +1,18 @@ { "cookies": [ - "has given you a chocolate chip cookie!", - "has given you a soft homemade oatmeal cookie!", - "has given you a plain, dry, old cookie. It was the last one in the bag. Gross.", - "gives you a sugar cookie. What, no frosting and sprinkles? 0\/10 would not touch.", - "gives you a chocolate chip cookie. Oh wait, those are raisins. Bleck!", - "gives you an enormous cookie. Poking it gives you more cookies. Weird.", - "gives you a fortune cookie. It reads \"Why aren't you working on any projects?\"", - "gives you a fortune cookie. It reads \"Give that special someone a compliment\"", - "gives you a fortune cookie. It reads \"Take a risk!\"", - "gives you a fortune cookie. It reads \"Go outside.\"", - "gives you a fortune cookie. It reads \"Don't forget to eat your veggies!\"", - "gives you a fortune cookie. It reads \"Do you even lift?\"", - "gives you a fortune cookie. It reads \"m808 pls\"", + "ti je dao \u010dokoladni kola\u010di\u0107!", + "ti je dao meki doma\u0107i zobeni kola\u010di\u0107!", + "ti je dao obi\u010dan, suv, stari kola\u010di\u0107. To je bio posljednji u torbi.", + "ti daje \u0161e\u0107erni kola\u010di\u0107. Ono, bez glazura i mrvica? 0\/10, ne\u0107u dirati.", + "ti daje \u010dokoladni kola\u010di\u0107. \u010cekaj, to su gro\u017e\u0111ice. Bljak!", + "ti daje ogromni kola\u010di\u0107. Bockanje ti daje vi\u0161e kola\u010di\u0107a. \u010cudno.", + "daje kola\u010di\u0107 budu\u0107nosti. Pi\u0161e: \"Za\u0161to ne radi\u0161 na nekim projektima?\"", + "daje kola\u010di\u0107 budu\u0107nosti. Pi\u0161e: \"Daj nekom posebnom kompliment\"", + "daje kola\u010di\u0107 budu\u0107nosti. Pi\u0161e: \"Treba riskirati!\"", + "daje kola\u010di\u0107 budu\u0107nosti. Pi\u0161e: \"Idi napolje.\"", + "daje kola\u010di\u0107 budu\u0107nosti. Pi\u0161e: \"Ne zaboravi da jede\u0161 povr\u0107e!\"", + "daje kola\u010di\u0107 sre\u0107e. Pi\u0161e: \"Di\u017ee\u0161 li uop\u0161te?\"", + "daje kola\u010di\u0107 sre\u0107e. Pi\u0161e: \"m808 molim te\"", "gives you a fortune cookie. It reads \"If you move your hips, you'll get all the ladies.\"", "gives you a fortune cookie. It reads \"I love you.\"", "gives you a Golden Cookie. You can't eat it because it is made of gold. Dammit.", @@ -25,51 +25,50 @@ "Signs point to yes.", "Yes.", "Reply hazy, try again.", - "Without a doubt.", - "My sources say no.", - "As I see it, yes.", + "Bez dileme.", + "Moji izvori ka\u017eu ne.", + "Kako ja vidim, da.", "You may rely on it.", "Concentrate and ask again.", "Outlook not so good.", "It is decidedly so.", - "Better not tell you now.", + "Bolje da ti ne ka\u017eem sada.", "Very doubtful.", - "Yes - definitely.", + "Da - definitivno.", "It is certain.", - "Cannot predict now.", + "Trenutno ne mogu da predvidim.", "Most likely.", - "Ask again later.", - "My reply is no.", + "Pitaj ponovo kasnije.", + "Moj odgovor je ne.", "Outlook good.", "Don't count on it.", "Yes, in due time.", - "My sources say no.", - "Definitely not.", - "You will have to wait.", + "Definitivno ne.", + "Mora\u0107e\u0161 da \u010deka\u0161.", "I have my doubts.", "Outlook so so.", - "Looks good to me!", - "Who knows?", - "Looking good!", - "Probably.", + "Meni izgleda dobro!", + "Ko zna?", + "Izgleda dobro!", + "Verovatno.", "Are you kidding?", "Don't bet on it.", - "Forget about it." + "Zaboravi." ], "nodatafound": "Prethodni podaci nisu prona\u0111eni.", - "currentlang": "\/me Jezik podesen na: %%LANGUAGE%%", - "langerror": "\/me Jezik koji ste odabrali nije dostupan. Poseti %%LINK%% da bi pronasao dostupne jezike.", - "langset": "\/me Jezik je sada podesen na: %%LANGUAGE%%", + "currentlang": "\/me Jezik pode\u0161en na: %%LANGUAGE%%", + "langerror": "\/me Jezik koji ste odabrali nije dostupan. Poseti %%LINK%% da prona\u0111e\u0161 dostupne jezike.", + "langset": "\/me Jezik je sada pode\u0161en na: %%LANGUAGE%%", "retrievingdata": "Preuzimanje prethodno sa\u010duvanih podataka.", "datarestored": "Prethodno sa\u010duvani podaci uspe\u0161no preuzeti.", "greyuser": "Samo bounceri i vi\u0161i rank mogu pokrenuti bota.", - "bouncer": "Bot ne mo\u017ee premestati ljude ukoliko je pokrenut od strane bouncera.", - "online": "\/me %%BOTNAME%% %%VERSION%% online!", + "bouncer": "Bot ne mo\u017ee preme\u0161tati ljude ukoliko je pokrenut od strane bouncera.", + "online": "\/me %%BOTNAME%% %%VERSION%% je online!", "welcome": "\/me Dobrodo\u0161ao %%NAME%%", "welcomeback": "\/me Dobrodo\u0161ao nazad, %%NAME%%", - "songknown": "\/me @%%NAME%%, Ova pesma je u DJ istoriji.", - "notavailable": "\/me @%%NAME%%, the song you played was not available.", - "timelimit": "\/me @%%NAME%%, Tvoja pesma je duza od %%MAXLENGTH%% minuta, potrebna ti je dozvola da pustas duze pesme.", + "songknown": "\/me @%%NAME%%, ova pesma je u DJ istoriji.", + "notavailable": "\/me @%%NAME%%, pesma koju si pustio\/la nije bila dostupna.", + "timelimit": "\/me @%%NAME%%, tvoja pesma je du\u017ea od %%MAXLENGTH%% minuta, potrebna ti je dozvola da pu\u0161tas du\u017ee pesme.", "permissionownsong": "\/me :up: @%%NAME%% ima dozvolu da pu\u0161ta svoju vlastitu pesmu.", "isblacklisted": "\/me Ova pesma je na %%BLACKLIST%% blacklisti! Prebacujem....", "isopen": "\/me Rulet je pokrenut! Pi\u0161i !join da u\u010destvuje\u0161.", @@ -80,9 +79,9 @@ "alreadyadding": "\/me Korisnik je ve\u0107 dodan! Promenjena \u017eeljena pozicija na %%POSITION%%.", "adding": "\/me Dodan @%%NAME%% u red. Trenutna pozicija %%POSITION%%.", "usernotfound": "\/me Korisnik nije prona\u0111en.", - "notdisconnected": "\/me @%%NAME%% se nije diskonektovao tokom mog boravka ovde.", - "noposition": "\/me Zadnja pozicija nepoznata. Listu cekanja treba a\u017eurirati najmanje jednom da bi se registrovala zadnja pozicija korisnika.", - "toolongago": "\/me @%%NAME%% zadnji diskonekt (DC ili leave) je bio davno: %%TIME%%.", + "notdisconnected": "\/me @%%NAME%% se nije diskonektovao tokom mog boravka ovde.", + "noposition": "\/me Zadnja pozicija nepoznata. Listu \u010dekanja treba a\u017eurirati najmanje jednom da bi se registrovala zadnja pozicija korisnika.", + "toolongago": "\/me @%%NAME%%,tvoj zadnji diskonekt (DC ili leave) je bio davno: %%TIME%%.", "valid": "\/me @%%NAME%% se diskonektovao pre %%TIME%% i trebao bi biti na poziciji %%POSITION%%.", "warning1": "\/me @%%NAME%%, ti si afk %%TIME%%, molim odgovori u roku od 2 min ili \u0107e\u0161 biti uklonjen sa liste \u010dekanja.", "warning2": "\/me @%%NAME%%, uskoro \u0107e\u0161 biti uklonjen sa liste zbog AFK ukoliko ne odgovori\u0161.", @@ -92,13 +91,13 @@ "spam": "\/me @%%NAME%%, molim, ne spamaj.", "roomadvertising": "\/me @%%NAME%%, ne postavljaj linkove drugih soba.", "adfly": "\/me @%%NAME%%, promeni tvoj autowoot program. Mi preporu\u010dujemo PlugCubed: http:\/\/plugcubed.net\/", - "validgiftags": "\/me [@%%NAME%%] http:\/\/media.giphy.com\/media\/%%ID%%\/giphy.gif [Oznaka: %%TAGS%%]", - "invalidgiftags": "\/me [@%%NAME%%] Pogre\u0161na oznaka, poku\u0161aj ne\u0161to drugo. [Oznaka: %%TAGS%%]", - "validgifrandom": "\/me [@%%NAME%%] http:\/\/media.giphy.com\/media\/%%ID%%\/giphy.gif [Slu\u010dajno odabran GIF]", + "validgiftags": "/me [@%%NAME%%] [Oznaka: %%TAGS%%] http://i.giphy.com/%%ID%%.gif", + "invalidgiftags": "/me [@%%NAME%%] [Oznaka: %%TAGS%%] Pogrešna oznaka, pokušaj nešto drugo.", + "validgifrandom": "/me [@%%NAME%%] [Slučajno odabran GIF] http://i.giphy.com/%%ID%%.gif", "invalidgifrandom": "\/me [@%%NAME%%] Neva\u017ee\u0107i zahtev, poku\u0161ajte ponovo.", "invalidtime": "\/me [@%%NAME%%] Navedeno vreme pogre\u0161no.", "nouserspecified": "\/me [@%%NAME%%] Korisnik nije naveden.", - "invaliduserspecified": "\/me [@%%NAME%%] Navedeni korisnik pogre\u0161an", + "invaliduserspecified": "\/me [@%%NAME%%] Navedeni korisnik je pogre\u0161an.", "nolistspecified": "\/me [@%%NAME%%] Navedena lista ne postoji.", "invalidlistspecified": "\/me [@%%NAME%%] Navedena lista pogre\u0161na.", "novaliduserspecified": "\/me [@%%NAME%%] Navedeni korisnik nije va\u017ee\u0107i.", @@ -140,20 +139,20 @@ "inactivelonger": "\/me [@%%NAME%%] @%%USERNAME%% je neaktivan du\u017ee nego sto je %%BOTNAME%% online.", "autowoot": "\/me Mi preporu\u010dujemo PlugCubed za automatsko glasanje: http:\/\/plugcubed.net\/", "brandambassador": "\/me Brand Ambassador je glas plug.dj korisnika. Oni promovi\u0161u doga\u0111aje, spajaju zajednicu i dele poruke plug.dj-a \u0161irom sveta. Za vi\u0161e informacija: https:\/\/plug.dj\/ba", - "bouncerplusrank": "\/me [@%%NAME%%] Moras biti Mena\u0111er ili vi\u0161i rank da bi uklju\u010dio Bouncer+.", + "bouncerplusrank": "\/me [@%%NAME%%] Mora\u0161 biti Menad\u017eer ili vi\u0161i rank da bi uklju\u010dio Bouncer+.", "chatcleared": "\/me [@%%NAME%%] Je o\u010distio chat.", "deletechat": "\/me [@%%NAME%%] Je o\u010distio chat od %%USERNAME%%.", "commandslink": "\/me %%BOTNAME%% komande: %%LINK%%", "eatcookie": "\/me jede kola\u010d.", "nousercookie": "\/em ne vidi %%NAME%% u sobi i uzima kola\u010d samo za sebe.", - "selfcookie": "\/me @%%NAME%%, malo si \u0161krt, zar ne? Dajes kola\u010de sebi, bah. Podeli malo i sa ostalima!", + "selfcookie": "\/me @%%NAME%%, malo si \u0161krt, zar ne? Daje\u0161 kola\u010de sebi, bah. Podeli malo i sa ostalima!", "cookie": "\/me @%%NAMETO%%, %%NAMEFROM%% %%COOKIE%%", "cycleguardtime": "\/me [@%%NAME%%] CycleGuard pode\u0161en na %%TIME%% minuta.", "dclookuprank": "\/me [@%%NAME%%] Samo bounceri i vi\u0161i rank mogu dclookup za ostale.", "emojilist": "\/me Emoji lista: %%LINK%%", "notinwaitlist": "\/me @%%NAME%%, nisi na listi \u010dekanja.", - "youarenext": "\/me @%%NAME%%, you are DJing after this song.", - "youaredj": "\/me @%%NAME%%, you are currently DJing.", + "youarenext": "\/me @%%NAME%%, nastupa\u0161 posle ove pesme.", + "youaredj": "\/me @%%NAME%%, trenutno si DJ.", "eta": "\/me @%%NAME%% do\u0107i \u0107e\u0161 na red za otprilike %%TIME%%.", "facebook": "\/me Lajkuj nas na facebook-u: %%LINK%%", "starterhelp": "\/me Ova slika ce ti pomo\u0107i za po\u010detak: %%LINK%%", @@ -166,28 +165,28 @@ "rouletteleave": "\/me @%%NAME%% je napustio rulet!", "songlink": "\/me [@%%NAME%%] Link do trenutne pesme: %%LINK%%", "usedlockskip": "\/me [%%NAME%% je koristio LockSkip.]", - "usedskip": "\/me [%%NAME%% used skip]", - "skippos": "\/me [@%%NAME%%] DJs will now be moved to position %%POSITION%% when skipped.", + "usedskip": "\/me [%%NAME%% je koristio skip]", + "skippos": "\/me [@%%NAME%%] DJ-evi \u0107e sada biti pomereni na poziciju %%POSITION%% nakon preskakanja.", "lockguardtime": "\/me [@%%NAME%%] Lockguard pode\u0161en na %%TIME%% minuta.", - "maxlengthtime": "\/me [@%%NAME%%] Maksimalno trajanje pesme pode\u0161eno na %%TIME%% minuta.", + "maxlengthtime": "\/me [@%%NAME%%] Maksimalno trajanje pesme je pode\u0161eno na %%TIME%% minuta.", "motdset": "\/me Poruka Dana pode\u0161ena na: %%MSG%%", "motdintervalset": "\/me Interval Poruke dana pode\u0161en na %%INTERVAL%%.", - "currentbotname": "\/me Bot name currently set to: %%BOTNAME%%", - "botnameset": "\/me Bot name now set to: %%BOTNAME%%", + "currentbotname": "\/me Trenutno ime bota je: %%BOTNAME%%", + "botnameset": "\/me Ime bota je pode\u0161eno na: %%BOTNAME%%", "addbotwaitlist": "\/me @%%NAME%%, nemoj da me dodaje\u0161 na listu \u010dekanja, molim.", "move": "\/me [%%NAME%% je koristio preme\u0161tanje.]", "mutednotime": "\/me [@%%NAME%%] Je uti\u0161ao @%%USERNAME%%.", "mutedmaxtime": "\/me [@%%NAME%%] Mo\u017ee\u0161 mute maksimalno %%TIME%% minuta.", - "mutedtime": "\/me [@%%NAME%%] Je mutovao @%%USERNAME%% na %%TIME%% minuta.", + "mutedtime": "\/me [@%%NAME%%] Je uti\u0161ao @%%USERNAME%% na %%TIME%% minuta.", "unmuted": "\/me [@%%NAME%%] Je unmutovao @%%USERNAME%%.", - "muterank": "\/me [@%%NAME%%] Ne mo\u017ee\u0161 mute osobu sa istim ili ve\u0107im rankom od tebe.", + "muterank": "\/me [@%%NAME%%] Ne mo\u017ee\u0161 uti\u0161ati osobu sa istim ili ve\u0107im rankom od tebe.", "oplist": "\/me OP lista: %%LINK%%", "pong": "\/me Pong!", "reload": "\/me Vra\u0107am se ubrzo.", "removenotinwl": "\/me [@%%NAME%%] Navedeni korisnik @%%USERNAME%% nije na listi \u010dekanja.", "roomrules": "\/me Pravila sobe mozes prona\u0107i ovde: %%LINK%%", "sessionstats": "\/me [@%%NAME%%] Ukupno woot-ova: %%WOOTS%%, Ukupno meh-ova: %%MEHS%%, Ukupno dohva\u0107eno: %%GRABS%%.", - "forceskip": "\/me [%%NAME%% used forceskip]", + "forceskip": "\/me [%%NAME%% je koristio forceskip]", "madeby": "\/me Ovog bot-a je napravio %%NAME%%.", "activefor": "Ja sam ve\u0107 aktivan %%TIME%%.", "swapinvalid": "\/me [@%%NAME%%] Navedeni korisnik nije prona\u0111en. (Imena sa razmacima!)", @@ -201,7 +200,11 @@ "unmuterank": "\/me [@%%NAME%%] Ne mo\u017ees unmutovati osobu sa istim ili ve\u0107im rankom od tebe.", "commandscd": "\/me [@%%NAME%%] Razmak izme\u0111u komandi za korisnike pode\u0161en na %%TIME%% sekundi.", "voteratio": "\/me [@%%NAME%%] @%%USERNAME%% ~ Wotovi: %%WOOT%%, Mehovi: %%MEHS%%, Razmer(w\/m): %%RATIO%%.", - "website": "\/me Molimo posetite nasu web stranicu: %%LINK%%", + "website": "\/me Molimo posetite na\u0161u web stranicu: %%LINK%%", "youtube": "\/me [%%NAME%%] Pretplatite se na na\u0161 YouTube kanal: %%LINK%%", - "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%W\/%%GRABS%%G\/%%MEHS%%M." -} \ No newline at end of file + "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%W\/%%GRABS%%G\/%%MEHS%%M.", + "thorNotClose": "\/me @%%NAME%%, nisi dostojan da bude\u0161 blizu \u010deki\u0107a!", + "thorcd": "\/me @%%NAME%% mo\u017ee\u0161 probati da podigne\u0161 \u010deki\u0107 za %%TIME%% minuta.", + "thorWorthy": "\/me @%%NAME%% ti si dostojan \u010deki\u0107a :hammer:, \u010destitam!", + "thorNotWorthy": "\/me @%%NAME%% nisi dostojan \u010deki\u0107a." +} diff --git a/lang/tr.json b/lang/tr.json old mode 100644 new mode 100755 index cc65f1a1..3365a9f9 --- a/lang/tr.json +++ b/lang/tr.json @@ -1,38 +1,38 @@ { "cookies": [ - "\u00c7ikolatal\u0131 \u00e7erez ald\u0131n.", - "Yumu\u015fak \u00e7erez ald\u0131n.", - "Sade \u00e7erez ald\u0131n.", - "Sana \u015feker \u00e7erez verir. 0\/10!", - "\u00c7ikolatal\u0131 \u00e7erez verir.Bekleyin.", - "Kocaman \u00e7erez verir.", - "Zengin \u00e7erezi ald\u0131n.", - "Zengin \u00e7erezi ald\u0131n.", - "Zengin \u00e7erez ald\u0131n.Bu riskli.", - "Zengin \u00e7erez ald\u0131n.\u00c7\u0131k\u0131\u015f.", - "\u00c7erez ald\u0131n.", - "\u00c7erez ald\u0131n.", - "\u00c7erez ald\u0131n.", - "\u00c7erez ald\u0131n.", - "\u00c7erez ald\u0131n.Seni seviyorum.", - "Alt\u0131n \u00e7erez ald\u0131n.", - "G\u00f6zl\u00fcklerin s\u00fct ile \u00e7erezli.", - ":heart: Sevgi \u00e7erezi ald\u0131n.", - "Eski \u00e7erez ald\u0131n.", - "H\u0131zl\u0131 \u00e7erez ald\u0131n." + "Sana \u00c7ikolatal\u0131 Kurabiye verdi", + "Sana Yumu\u015fak Kurabiye verdi", + "Sana Kurumu\u015f, eskimi\u015f kurabiye verdi. Torban\u0131n i\u00e7inde bir tek o duruyor. LANET!", + "Sana \u015feker Kurabiyesi verdi. Ne, buzlanma ve serpme yok mu? 0\/10 dokunmazd\u0131.", + "Sana \u00c7ikolatal\u0131 kurabiye verdi. Oh wait.... Bunlar kuru \u00fcz\u00fcm. Kahretsin!", + "Kocaman kurabiye verdi. Bast\u0131r\u0131rsan daha fazla kurabiye al\u0131yorsun. Garip.", + "Sana bir \u015fans kurabiyesi verdi. \"Neden herhangi bir proje \u00fczerinde \u00e7al\u0131\u015fm\u0131yorsunuz?\"", + "Sana bir \u015fans kurabiyesi verdi. \"Senin i\u00e7in \u00f6zel bir ki\u015fiye iltifat et\"", + "Sana bir \u015fans kurabiyesi verdi. \"Risk al!\"", + "Sana bir \u015fans kurabiyesi verdi. \"D\u0131\u015far\u0131 \u00e7\u0131k\" yaz\u0131yor.", + "Sana bir \u015fans kurabiyesi verdi. \"Sebzelerini yemeyi unutma!\"", + "Sana bir \u015fans kurabiyesi verdi. \"Hi\u00e7 kalkt\u0131 m\u0131?\"", + "Sana bir servet kurabiyesi verdi. \"M808 pls\" yaz\u0131yor", + "Sana bir \u015fans kurabiyesi verdi. \"Kal\u00e7alar\u0131n\u0131z\u0131 hareket ettirirseniz, t\u00fcm bayanlara kavu\u015fursunuz.\" yaz\u0131yor.", + "sevgi dolu kurabiye ald\u0131n. \"Seni Seviyorum\" yaz\u0131yor", + "Alt\u0131n kurabiye ald\u0131n. Onu yiyemiyorsun \u00e7\u00fcnk\u00fc alt\u0131ndan yap\u0131lm\u0131\u015f. Lanet!", + "Oreo ve bir bardak s\u00fct ald\u0131n. ", + "Sana Sevgi ile yap\u0131lm\u0131\u015f G\u00f6kku\u015fa\u011f\u0131 kurabiyesi verdi. :heart:", + "Sana ya\u011fmurda b\u0131rak\u0131lm\u0131\u015f eski bir kurabiye verir, k\u00fcfl\u00fcd\u00fcr.", + "Sana taze \u00e7erezleri pi\u015firir, \u015fa\u015f\u0131rt\u0131c\u0131 kokuyor." ], "balls": [ - "\u0130\u015faret puanlar\u0131 do\u011fru.", + "\u0130\u015faretler evet'i g\u00f6steriyor.", "Evet.", "Yanl\u0131\u015f cevap, tekrar deneyin.", "\u015e\u00fcphesiz.", - "Benim kaynaklarim dogrulanmadi.", + "Kaynaklar\u0131m hay\u0131r diyor.", "G\u00f6rd\u00fc\u011f\u00fcm kadar\u0131yla, do\u011fru.", "Sen ona ba\u011fl\u0131s\u0131n.", "D\u00fczg\u00fcn bir soru sor.", - "Outlook iyi degil.", - "Kesinlikle b\u00f6yle.", - "\u015eimdi s\u00f6ylememen gerekli.", + "\u0130yi g\u00f6r\u00fcnm\u00fcyor", + "Kesinlikle \u00f6yle.", + "Sana \u015fimdi s\u00f6ylemem daha iyi.", "\u00c7ok \u015f\u00fcphelisin.", "Evet kesinlikle.", "Bu kesin!", @@ -40,21 +40,20 @@ "B\u00fcy\u00fck ihtimalle.", "Daha sonra tekrar sorun.", "Cevab\u0131m hay\u0131r.", - "Outlook iyi.", + "\u0130yi g\u00f6r\u00fcn\u00fcyor.", "Bu say\u0131lmaz.", "Evet, dogru zamanda.", - "Benim kaynaklarim desteklemiyor.", - "Kesinlikle hay\u0131r.", + "kesinlikle hay\u0131r.", "Beklemek zorundas\u0131n.", - "\u015e\u00fcphelerim var.", - "Outlook \u00f6ylesine.", - "Bana bak\u0131\u015f\u0131n iyi.", - "Kim bilir ?", - "\u0130yi g\u00f6r\u00fcn\u00fcyor.", - "Muhtemelen.", - "Dalga m\u0131 ge\u00e7iyorsun ?", - "Bunun icin kumar oynamayin :)", - "Unut gitsin." + "Beklemek zorundas\u0131n.", + "eh i\u015fte g\u00f6r\u00fcn\u00fcyor.", + "Benim i\u00e7in iyi g\u00f6r\u00fcn\u00fcyor.", + "Kim Bilir?", + "G\u00fczel g\u00f6r\u00fcn\u00fcyor", + "muhtemelen", + "Dalga m\u0131 ge\u00e7iyorsun?", + "Bahse girme.", + "Unut gitsin\n" ], "nodatafound": "Veriler bulunamadi.", "currentlang": "\/me Suanki bot dili: %%LANGUAGE%%", @@ -74,7 +73,7 @@ "isblacklisted": "\/me Sarki %%BLACKLIST%% yasak listesinde! Geciliyor...", "isopen": "\/me Rulet artik acik! Kullanim: Sohbete !join yazin.!", "winnerpicked": "\/me Sanslisiniz! @%%NAME%% yeni dj siran %%POSITION%%.", - "ball": "\/me %%NAME%%'in sorusu var: \\\"%%QUESTION%%\\\" ve %%BOTNAME%%'in cevabi ise: \\\"%%RESPONSE%%\\\"", + "ball": "\/me %%NAME%%'in sorusu var: \"%%QUESTION%%\" ve %%BOTNAME%%'in cevabi ise: \"%%RESPONSE%%\"", "notghosting": "[%%NAME1%%] %%NAME2%% gizlenmiyor.", "ghosting": "[%%NAME1%%] %%NAME2%% gizleniyor.", "alreadyadding": "\/me Kullanici zaten eklendi! Konum degistirildi %%POSITION%%.", @@ -92,9 +91,9 @@ "spam": "\/me @%%NAME%%, lutfen spam yapmayin.", "roomadvertising": "\/me @%%NAME%%, diger odalarin reklamini yapmayin.", "adfly": "\/me @%%NAME%%, lutfen otowootunuzu degistirin. Onerilen: http:\/\/plugcubed.net\/", - "validgiftags": "\/me [@%%NAME%%] http:\/\/media.giphy.com\/media\/%%ID%%\/giphy.gif [Etiketler: %%TAGS%%]", - "invalidgiftags": "\/me [@%%NAME%%] gecersiz etiket, baska etiket deneyin. [Etiket: %%TAGS%%]", - "validgifrandom": "\/me [@%%NAME%%] http:\/\/media.giphy.com\/media\/%%ID%%\/giphy.gif [Rastgele GIF]", + "validgiftags": "/me [@%%NAME%%] [Etiketler: %%TAGS%%] http://i.giphy.com/%%ID%%.gif", + "invalidgiftags": "/me [@%%NAME%%] [Etiket: %%TAGS%%] gecersiz etiket, baska etiket deneyin.", + "validgifrandom": "/me [@%%NAME%%] [Rastgele GIF] http://i.giphy.com/%%ID%%.gif", "invalidgifrandom": "\/me [@%%NAME%%] gecersiz istek, tekrar deneyin.", "invalidtime": "\/me [@%%NAME%%] gecersiz zaman yazildi.", "nouserspecified": "\/me [@%%NAME%%] kullanici belirtilmedi.", @@ -146,7 +145,7 @@ "commandslink": "\/me %%BOTNAME%% Komutlar: %%LINK%%", "eatcookie": "\/me Cerezler.", "nousercookie": "\/em Odada %%NAME%% gozukmuyor.", - "selfcookie": "\/me @%%NAME%%, sen biraz ac gozlusun sanirsam, lutfen diger kullanicilarla cerezlerini paylas!", + "selfcookie": "\/me @%%NAME%%, sen biraz ac gozlusun sanirsam, lutfen diger kullanicilarla cerezlerini", "cookie": "\/me @%%NAMETO%%, %%NAMEFROM%% %%COOKIE%%", "cycleguardtime": "\/me [@%%NAME%%] CYCLguard %%TIME%% dakika(lar) olarak ayarlandi.", "dclookuprank": "\/me [@%%NAME%%] Sadece yukaridaki kullanicilar icin arama yapabilirsiniz.", @@ -203,5 +202,9 @@ "voteratio": "\/me [@%%NAME%%] @%%USERNAME%% ~ WOOT: %%WOOT%%, MEH: %%MEHS%%, ORAN (W\/M): %%RATIO%%.", "website": "\/me Sitemizi ziyaret edin: %%LINK%%", "youtube": "\/me [%%NAME%%] Youtube kanalimiza abone olun: %%LINK%%", - "songstatistics": "\/me :arrow_right: %%ARTIST%% - %%TITLE%%: %%WOOTS%%:+1:\/\\%%GRABS%%:sparkling_heart:\/\\%%MEHS%%:-1:." -} \ No newline at end of file + "songstatistics": "\/me :arrow_right: %%ARTIST%% - %%TITLE%%: %%WOOTS%%:+1:\/\\%%GRABS%%:sparkling_heart:\/\\%%MEHS%%:-1:.", + "thorNotClose": "\/me @%%NAME%%, \u00c7eki\u00e7 yakla\u015fmaya lay\u0131k de\u011filsin!", + "thorcd": "\/me @%%NAME%% you can try to lift the hammer in %%TIME%% minutes.", + "thorWorthy": "\/me @%%NAME%% \u00c7ekice lay\u0131k se\u00e7ildin tebrikler :hammer:", + "thorNotWorthy": "\/me @%%NAME%% \u00c7ekice lay\u0131k de\u011filsin" +} diff --git a/lang/zh.json b/lang/zh-TW.json old mode 100644 new mode 100755 similarity index 89% rename from lang/zh.json rename to lang/zh-TW.json index 06bb7c2c..6f31b57f --- a/lang/zh.json +++ b/lang/zh-TW.json @@ -1,14 +1,14 @@ { "cookies": [ - "\u5df2\u7d66\u4f60\u4e00\u500b\u6731\u53e4\u529b\u9905\u4e7e!", - "\u5df2\u7d66\u4f60\u4e00\u500b\u9b06\u8edf\u5168\u9ea5\u9905\u4e7e!", - "\u5df2\u7d66\u4f60\u4e00\u500b\u7c21\u55ae, \u4e7e, \u4e26\u8001\u7684\u9905\u4e7e. \u9019\u53ef\u662f\u5305\u88dd\u88e1\u7684\u6700\u5f8c\u4e00\u7247\u5594. \u8d85\u8b9a.", - "\u7d66\u4f60\u4e00\u500b\u7cd6\u9905\u4e7e. \u751a\u9ebc, \u6c92\u6709\u51b0\u51cd\u5f69\u7cd6? 0\/10 \u4e0d\u6703\u52d5.", - "\u7d66\u4f60\u4e00\u500b\u5de7\u514b\u529b\u9905\u4e7e. \u5594\u7b49\u7b49, \u5b83\u5011\u662f\u8461\u8404\u4e7e. Bleck!", - "\u7d66\u4f60\u4e00\u500b\u5de8\u5927\u7684\u9905\u4e7e. \u5206\u89e3\u5b83\u6703\u8b93\u4f60\u64c1\u6709\u66f4\u591a\u9905\u4e7e. \u602a\u7570.", - "\u7d66\u4f60\u4e00\u500b\u904b\u6c23\u9905\u4e7e. \u5b83\u5beb\u8457\"\u70ba\u751a\u9ebc\u4f60\u4e0d\u505a\u4e00\u4e9b\u5176\u4ed6\u7684\u8a08\u756b?\"", - "\u7d66\u4f60\u4e00\u500b\u547d\u904b\u9905\u4e7e. \u5b83\u5beb\u8457\"\u67d0\u500b\u7279\u5225\u7684\u4eba\u7d66\u4f60\u4e00\u500b\u7a31\u8b9a\"", - "\u7d66\u4f60\u4e00\u500b\u547d\u904b\u9905\u4e7e. \u5b83\u5beb\u8457\"\u5192\u4e00\u500b\u96aa\u5427!\"", + "\u5df2\u7d66\u4f60\u4e00\u500b\u6731\u53e4\u529b\u9905\u4e7e\uff01", + "\u5df2\u7d66\u4f60\u4e00\u500b\u9b06\u8edf\u5168\u9ea5\u9905\u4e7e\uff01", + "\u5df2\u7d66\u4f60\u4e00\u500b\u7c21\u55ae\uff0c\u4e7e\uff0c\u4e26\u8001\u7684\u9905\u4e7e\u3002\u9019\u53ef\u662f\u5305\u88dd\u88e1\u7684\u6700\u5f8c\u4e00\u7247\u5594\u3002\u8d85\u8b9a\u3002", + "\u7d66\u4f60\u4e00\u500b\u7cd6\u9905\u4e7e\u3002\u751a\u9ebc\uff0c\u6c92\u6709\u7cd6\u971c\u5f69\u7cd6\uff1f0\/10 \u4e0d\u6703\u52d5\u3002", + "\u7d66\u4f60\u4e00\u500b\u5de7\u514b\u529b\u9905\u4e7e\u3002\u5594\u7b49\u7b49\uff0c\u5b83\u5011\u662f\u8461\u8404\u4e7e\u3002Bleck\uff01", + "\u7d66\u4f60\u4e00\u500b\u5de8\u5927\u7684\u9905\u4e7e\u3002\u5206\u89e3\u5b83\u6703\u8b93\u4f60\u64c1\u6709\u66f4\u591a\u9905\u4e7e\u3002\u771f\u602a\u3002", + "\u7d66\u4f60\u4e00\u500b\u904b\u6c23\u9905\u4e7e\u3002\u5b83\u5beb\u8457\u300c\u70ba\u751a\u9ebc\u4f60\u4e0d\u505a\u4e00\u4e9b\u5176\u4ed6\u7684\u8a08\u756b\uff1f\u300d", + "\u7d66\u4f60\u4e00\u500b\u547d\u904b\u9905\u4e7e\u3002\u5b83\u5beb\u8457\u300c\u67d0\u500b\u7279\u5225\u7684\u4eba\u7d66\u4f60\u4e00\u500b\u7a31\u8b9a\u300d", + "\u7d66\u4f60\u4e00\u500b\u547d\u904b\u9905\u4e7e\u3002\u5b83\u5beb\u8457\u300c\u5192\u4e00\u500b\u96aa\u5427\uff01\u300d", "\u7d66\u4f60\u4e00\u500b\u547d\u904b\u9905\u4e7e. \u5b83\u5beb\u8457\"\u5230\u5916\u9762\u53bb.\"", "\u7d66\u4f60\u4e00\u500b\u547d\u904b\u9905\u4e7e. \u5b83\u5beb\u8457\"\u5225\u5fd8\u4e86\u5403\u4f60\u7684\u852c\u83dc!\"", "\u7d66\u4f60\u4e00\u500b\u547d\u904b\u9905\u4e7e. \u5b83\u5beb\u8457\"\u4f60\u6709\u505a\u91cd\u91cf\u8a13\u7df4\u55ce?\"", @@ -16,9 +16,9 @@ "\u7d66\u4f60\u4e00\u500b\u547d\u904b\u9905\u4e7e. \u5b83\u5beb\u8457\"\u5982\u679c\u4f60\u79fb\u52d5\u4f60\u7684\u814e\u90e8, \u4f60\u5c07\u5f97\u5230\u6240\u6709\u5973\u6027.\"", "\u7d66\u4f60\u4e00\u500b\u547d\u904b\u9905\u4e7e. \u5b83\u5beb\u8457\"\u6211\u611b\u4f60.\"", "\u7d66\u4f60\u4e00\u500b\u9ec3\u91d1\u9905\u4e7e. \u4f60\u4e0d\u80fd\u5403\u5b83\u56e0\u70ba\u5b83\u662f\u7528\u771f\u91d1\u88fd\u6210. \u8c48\u6709\u6b64\u7406.", - "\u7d66\u4f60\u4e00\u500bOreo\u9905\u4e7e\u9644\u52a0\u4e00\u676f\u725b\u5976!", + "\u7d66\u4f60\u4e00\u500bOreo\u9905\u4e7e\u9644\u52a0\u4e00\u676f\u725b\u5976\uff01", "\u7d66\u4f60\u4e00\u500b\u7528\u611b :heart: \u88fd\u6210\u7684\u5f69\u8679\u9905\u4e7e", - "\u7d66\u4f60\u4e00\u500b\u96e8\u5929\u88e1\u5269\u4e0b\u7684\u8001\u9905\u4e7e, \u5b83\u5df2\u7d93\u767c\u9709\u4e86.", + "\u7d66\u4f60\u4e00\u500b\u96e8\u5929\u88e1\u5269\u4e0b\u7684\u8001\u9905\u4e7e\uff0c\u5b83\u5df2\u7d93\u767c\u9709\u4e86\u3002", "\u70d8\u7119\u4e86\u4e00\u500b\u65b0\u9bae\u9905\u4e7e\u7d66\u4f60, \u771f\u7684\u5f88\u82ac\u9999\u5594." ], "balls": [ @@ -43,9 +43,8 @@ "\u5916\u8868\u5f88\u597d.", "\u4e0d\u8981\u6307\u671b\u5b83.", "\u662f\u7684, \u5728\u9069\u7576\u7684\u6642\u5019.", - "\u6211\u7684\u4f86\u6e90\u8aaa\u4e0d.", - "\u975e\u4e5f.", - "\u4f60\u6703\u9700\u8981\u7b49\u5f85.", + "\u7576\u7136\u4e0d\u662f.", + "\u4f60\u9700\u8981\u7b49\u5f85.", "\u6211\u6709\u6211\u7684\u61f7\u7591.", "\u5916\u8868\u666e\u901a.", "\u5728\u6211\u662f\u89ba\u5f97\u597d\u770b\u7684!", @@ -92,9 +91,9 @@ "spam": "\/me @%%NAME%%, \u8acb\u5225\u6d17\u677f\u704c\u6c34.", "roomadvertising": "\/me @%%NAME%%, \u8acb\u4e0d\u8981\u5ba3\u50b3\u5f35\u8cbc\u5176\u4ed6\u623f\u9593\u7684\u9023\u63a5.", "adfly": "\/me @%%NAME%%, \u8acb\u8b8a\u63db\u4f60\u7684\u81ea\u52d5\u6295\u7968\u5916\u639b. \u6211\u5011\u5efa\u8b70\u4f7f\u7528 PlugCubed: http:\/\/plugcubed.net\/", - "validgiftags": "\/me [@%%NAME%%] http:\/\/i.giphy.com\/%%ID%%.gif [\u6a19\u7c64: %%TAGS%%]", - "invalidgiftags": "\/me [@%%NAME%%] \u7121\u6548\u6a19\u7c64, \u8acb\u5617\u8a66\u4e00\u4e9b\u4e0d\u4e00\u6a23\u7684. [\u6a19\u7c64: %%TAGS%%]", - "validgifrandom": "\/me [@%%NAME%%] http:\/\/i.giphy.com\/%%ID%%.gif [\u96a8\u6a5f GIF]", + "validgiftags": "/me [@%%NAME%%] [標籤: %%TAGS%%] http://i.giphy.com/%%ID%%.gif", + "invalidgiftags": "/me [@%%NAME%%] [標籤: %%TAGS%%] 無效標籤, 請嘗試一些不一樣的.", + "validgifrandom": "/me [@%%NAME%%] [隨機 GIF] http://i.giphy.com/%%ID%%.gif", "invalidgifrandom": "\/me [@%%NAME%%] \u7121\u6548\u8acb\u6c42, \u8acb\u518d\u5617\u8a66.", "invalidtime": "\/me [@%%NAME%%] \u7121\u6548\u7684\u6642\u9593\u898f\u5b9a.", "nouserspecified": "\/me [@%%NAME%%] \u6c92\u6709\u6307\u5b9a\u7684\u7528\u6236.", @@ -133,7 +132,7 @@ "voteskipexceededlimit": "\/me @%%NAME%%, \u4f60\u7684\u6b4c\u66f2\u5df2\u8d85\u904e\u6295\u7968\u8df3\u904e\u9650\u5236 (%%LIMIT%% \u8ca0\u8a55).", "voteskipinvalidlimit": "\/me [@%%NAME%%] \u7121\u6548\u6295\u7968\u8df3\u904e\u9650\u5236, \u8acb\u518d\u5617\u8a66\u4f7f\u7528\u4e00\u500b\u6578\u5b57\u4f86\u8c61\u5fb5\u8ca0\u8a55\u7684\u6578\u76ee.", "voteskipsetlimit": "\/me [@%%NAME%%] \u6295\u7968\u8df3\u904e\u9650\u5236\u8a2d\u7f6e\u70ba %%LIMIT%%.", - "activeusersintime": "\/me [@%%NAME%%] \u5df2\u6709 %%AMOUNT%% \u4f4d\u7528\u6236\u5728\u904e\u53bb %%TIME%% \u5206\u9418\u88e1\u804a\u5929.", + "activeusersintime": "\/me [@%%NAME%%] \u5df2\u6709 %%AMOUNT%% \u4f4d\u7528\u6236\u5728\u904e\u53bb\u7684 %%TIME%% \u5206\u9418\u88e1\u804a\u5929.", "maximumafktimeset": "\/me [@%%NAME%%] \u6700\u9ad8\u9650\u5236afk\u639b\u6a5f\u9577\u5ea6\u8a2d\u7f6e\u70ba %%TIME%% \u5206\u9418.", "afkstatusreset": "\/me [@%%NAME%%] \u91cd\u8a2d @%%USERNAME%% \u7684afk\u72c0\u614b.", "inactivefor": "\/me [@%%NAME%%] @%%USERNAME%% \u5df2\u7d93\u4e0d\u6d3b\u8e8d\u4e86 %%TIME%% \u5206\u9418.", @@ -203,5 +202,9 @@ "voteratio": "\/me [@%%NAME%%] @%%USERNAME%% ~ \u6b63\u8a55: %%WOOT%%, \u8ca0\u8a55: %%MEHS%%, \u6bd4\u7387 (\u6b63\/\u8ca0): %%RATIO%%.", "website": "\/me \u8acb\u8a2a\u554f\u6211\u5011\u7684\u7db2\u7ad9: %%LINK%%", "youtube": "\/me [%%NAME%%] \u8a02\u95b1\u6211\u5011\u7684Youtube\u983b\u9053: %%LINK%%", - "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%\u6b63\/%%GRABS%%\u6536\u85cf\/%%MEHS%%\u8ca0." -} \ No newline at end of file + "songstatistics": "\/me %%ARTIST%% - %%TITLE%%: %%WOOTS%%\u6b63\/%%GRABS%%\u6536\u85cf\/%%MEHS%%\u8ca0.", + "thorNotClose": "\/me @%%NAME%%, you're not worthy of getting close to the hammer!", + "thorcd": "\/me @%%NAME%% you can try to lift the hammer in %%TIME%% minutes.", + "thorWorthy": "\/me @%%NAME%% you're worthy of the hammer :hammer:, congratulations!", + "thorNotWorthy": "\/me @%%NAME%% you're not worthy of the hammer." +}