diff --git a/.gitignore b/.gitignore index cabdf8d..eff1f86 100644 --- a/.gitignore +++ b/.gitignore @@ -62,4 +62,7 @@ db/ RP\.txt rp\.txt Rp\.txt -rP\.txt \ No newline at end of file +rP\.txt + +.log +*.log diff --git a/OutputLog.txt b/OutputLog.txt new file mode 100644 index 0000000..939bf86 --- /dev/null +++ b/OutputLog.txt @@ -0,0 +1,228 @@ +[Log] [Core] Initializing LocStrings +[Log] [Strings] Attempting to read localization file: locStrings.config +[Log] [Strings] Found lookup call in .\src\commands\CommandBeansShow.java: BeansShowInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandBeansShow.java: BeansShowDisplay +[Log] [Strings] Found lookup call in .\src\commands\CommandBetBeans.java: BetBeansInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandBetBeans.java: BetBeansLowBet +[Log] [Strings] Found lookup call in .\src\commands\CommandBetBeans.java: BetBeansNotValid +[Log] [Strings] Found lookup call in .\src\commands\CommandBetBeans.java: BetBeansNotEnough +[Log] [Strings] Found lookup call in .\src\commands\CommandBetBeans.java: BetBeansLose +[Log] [Strings] Found lookup call in .\src\commands\CommandBetBeans.java: BetBeansWin +[Log] [Strings] Found lookup call in .\src\commands\CommandBlurry.java: BlurryInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandBoop.java: BoopInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandBoop.java: BoopStandard +[Log] [Strings] Found lookup call in .\src\commands\CommandBoop.java: BoopPerson +[Log] [Strings] Found lookup call in .\src\commands\CommandBoop.java: BoopMultiple +[Log] [Strings] Found lookup call in .\src\commands\CommandChangeIndicator.java: ChangeIndicatorInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandChangeIndicator.java: ChangeIndicatorError +[Log] [Strings] Found lookup call in .\src\commands\CommandChangeIndicator.java: ChangeIndicatorChanged +[Log] [Strings] Found lookup call in .\src\commands\CommandChoose.java: ChooseInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandChoose.java: ChooseOne +[Log] [Strings] Found lookup call in .\src\commands\CommandChoose.java: ChooseChoice +[Log] [Strings] Found lookup call in .\src\commands\CommandColiru.java: ColiruInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandColiru.java: ColiruError +[Log] [Strings] Found lookup call in .\src\commands\CommandDoWork.java: DoWorkInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandDoWork.java: DoWorkFinished +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallYes1 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallYes2 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallYes3 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallYes4 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallYes5 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallYes6 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallYes7 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallYes8 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallYes9 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallYes10 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallMaybe1 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallMaybe2 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallMaybe3 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallMaybe4 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallMaybe5 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallNo1 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallNo2 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallNo3 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallNo4 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallNo5 +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandEightBall.java: EightBallError +[Log] [Strings] Found lookup call in .\src\commands\CommandFetch.java: FetchInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandFetch.java: FetchBringBack +[Log] [Strings] Found lookup call in .\src\commands\CommandFetch.java: FetchRunAway +[Log] [Strings] Found lookup call in .\src\commands\CommandFetch.java: FetchBringBackWrong +[Log] [Strings] Found lookup call in .\src\commands\CommandFetch.java: FetchEat +[Log] [Strings] Found lookup call in .\src\commands\CommandFetch.java: FetchCatchRun +[Log] [Strings] Found lookup call in .\src\commands\CommandFetch.java: FetchStare +[Log] [Strings] Found lookup call in .\src\commands\CommandFetch.java: FetchError +[Log] [Strings] Found lookup call in .\src\commands\CommandGiveBeans.java: GiveBeansInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandGiveBeans.java: GiveBeansInvalid +[Log] [Strings] Found lookup call in .\src\commands\CommandGiveBeans.java: GiveBeansNoneMentioned +[Log] [Strings] Found lookup call in .\src\commands\CommandGiveBeans.java: GiveBeansSuccess +[Log] [Strings] Found lookup call in .\src\commands\CommandGuildRoleAdd.java: GuildRoleAddInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandGuildRoleAdd.java: GuildRoleAddSuccess +[Log] [Strings] Found lookup call in .\src\commands\CommandGuildRoleAdd.java: GuildRoleAddFailure +[Log] [Strings] Found lookup call in .\src\commands\CommandGuildRoleAdd.java: GuildRoleAddNotAllowed +[Log] [Strings] Found lookup call in .\src\commands\CommandGuildRoleAllowed.java: GuildRoleAllowedInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandGuildRoleAllowed.java: GuildRoleAllowedDuplicate +[Log] [Strings] Found lookup call in .\src\commands\CommandGuildRoleAllowed.java: GuildRoleAllowedSuccess +[Log] [Strings] Found lookup call in .\src\commands\CommandGuildRoleRemove.java: GuildRoleRemoveInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandGuildRoleRemove.java: GuildRoleRemoveSuccess +[Log] [Strings] Found lookup call in .\src\commands\CommandGuildRoleRemove.java: GuildRoleRemoveFailure +[Log] [Strings] Found lookup call in .\src\commands\CommandGuildRoleRemove.java: GuildRoleRemoveNotAllowed +[Log] [Strings] Found lookup call in .\src\commands\CommandHelp.java: HelpInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandHelp.java: HelpDisplay +[Log] [Strings] Found lookup call in .\src\commands\CommandHelpBuilder.java: HelpBuilderInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandInfo.java: InfoInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandInfo.java: InfoResponse +[Log] [Strings] Found lookup call in .\src\commands\CommandInvite.java: InviteInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandJDoodle.java: JDoodleInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandJDoodle.java: JDoodleError +[Log] [Strings] Found lookup call in .\src\commands\CommandMap.java: MapInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandMap.java: MapInvalid +[Log] [Strings] Found lookup call in .\src\commands\CommandMap.java: MapVersion +[Log] [Strings] Found lookup call in .\src\commands\CommandMap.java: MapSeed +[Log] [Strings] Found lookup call in .\src\commands\CommandMap.java: MapWidth +[Log] [Strings] Found lookup call in .\src\commands\CommandMap.java: MapHeight +[Log] [Strings] Found lookup call in .\src\commands\CommandPerish.java: PerishInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandPing.java: PingInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandPing.java: PingResponse +[Log] [Strings] Found lookup call in .\src\commands\CommandPollManage.java: PollManageInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandPollResults.java: PollResultsInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandPollResults.java: PollResultsResponse +[Log] [Strings] Found lookup call in .\src\commands\CommandPollShow.java: PollShowInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandPollShow.java: PollShowNoPoll +[Log] [Strings] Found lookup call in .\src\commands\CommandPollShow.java: PollShowPoll +[Log] [Strings] Found lookup call in .\src\commands\CommandPollShow.java: PollShowChoices +[Log] [Strings] Found lookup call in .\src\commands\CommandPollVote.java: PollVoteInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandPollVote.java: PollVoteAlreadyVoted +[Log] [Strings] Found lookup call in .\src\commands\CommandPollVote.java: PollVoteNotValidVote +[Log] [Strings] Found lookup call in .\src\commands\CommandPollVote.java: PollVoteSuccess +[Log] [Strings] Found lookup call in .\src\commands\CommandPollVote.java: PollVoteNotValidNumber +[Log] [Strings] Found lookup call in .\src\commands\CommandPollVote.java: PollVoteNoPoll +[Log] [Strings] Found lookup call in .\src\commands\CommandRating.java: RatingInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandRating.java: RatingChanged +[Log] [Strings] Found lookup call in .\src\commands\CommandRating.java: RatingInvalid +[Log] [Strings] Found lookup call in .\src\commands\CommandRating.java: RatingWarning +[Log] [Strings] Found lookup call in .\src\commands\CommandRole.java: RoleInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandRole.java: RoleStandardResponse +[Log] [Strings] Found lookup call in .\src\commands\CommandRole.java: RoleError +[Log] [Strings] Found lookup call in .\src\commands\CommandRole.java: RoleNeededRole +[Log] [Strings] Found lookup call in .\src\commands\CommandRole.java: RoleChanged +[Log] [Strings] Found lookup call in .\src\commands\CommandRoll.java: RollInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandRoll.java: RollError +[Log] [Strings] Found lookup call in .\src\commands\CommandRPEnd.java: RPEndInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandRPEnd.java: RPEndFileOut +[Log] [Strings] Found lookup call in .\src\commands\CommandRPEnd.java: RPEndError +[Log] [Strings] Found lookup call in .\src\commands\CommandRPG.java: RPGInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandRPG.java: RPGInvalid +[Log] [Strings] Found lookup call in .\src\commands\CommandRPStart.java: RPStartInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandShutdown.java: ShutdownInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandStark.java: StarkInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandStats.java: StatsInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandTeey.java: TeeyInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandTweet.java: TweetInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandTweet.java: TweetError +[Log] [Strings] Found lookup call in .\src\commands\CommandWolfram.java: WolframInfo +[Log] [Strings] Found lookup call in .\src\commands\CommandWolfram.java: WolframNoArgs +[Log] [Strings] Found lookup call in .\src\commands\CommandWolfram.java: WolframError +[Log] [Strings] Found lookup call in .\src\commands\CommandYeet.java: YeetInfo +[Log] [Strings] Attempting to write updated localization file +[Log] [Core] Initializing LocCommands +[Log] [Strings] Attempting to read localization file: locCommands.config +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: work +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: shutdown +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: stats +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: invite +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: buildHelp +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: tweet +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: rating +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: indicator +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: guildroleallowed +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: poll +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: givebeans +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: rpg +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: fetch +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: guildroleadd +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: guildroleremove +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: teey +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: perish, thenperish +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: yeet +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: ping +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: boop +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: roll +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: choose +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: help +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: info, about +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: vote +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: results +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: showpoll +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: wolfram +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: c++, g++, cplus, cpp +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: java, jdoodle +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: beans +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: role +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: bet +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: map +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: rpstart +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: rpend +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: tony, stark, dontfeelgood, dontfeelsogood +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: blur +[Log] [Strings] Found lookup call in .\src\core\ObjectBuilderFactory.java: eightball, 8ball +[Log] [Strings] Attempting to write updated localization file +[Log] [Database] Connection to SQLite has been established. +[Log] [Core] Initializing CommandEnabler +[Log] [Core] Command registered under key work +[Log] [Core] Command registered under key shutdown +[Log] [Core] Command registered under key stats +[Log] [Core] Command registered under key invite +[Log] [Core] Command registered under key buildhelp +[Log] [Core] Command registered under key tweet +[Log] [Core] Command registered under key rating +[Log] [Core] Command registered under key indicator +[Log] [Core] Command registered under key guildroleallowed +[Log] [Core] Command registered under key poll +[Log] [Core] Command registered under key givebeans +[Log] [Command] [RPG] Registered stats +[Log] [Command] [RPG] Registered about +[Log] [Command] [RPG] Registered info +[Log] [Command] [RPG] Registered explore +[Log] [Command] [RPG] Registered run +[Log] [Command] [RPG] Registered fight +[Log] [Core] Command registered under key rpg +[Log] [Core] Command registered under key fetch +[Log] [Core] Command registered under key guildroleadd +[Log] [Core] Command registered under key guildroleremove +[Log] [Core] Command registered under key teey +[Log] [Core] Command registered under key perish +[Log] [Core] Command registered under key thenperish +[Log] [Core] Command registered under key yeet +[Log] [Core] Command registered under key ping +[Log] [Database] CreateGeyKey: key-booptracker +[Log] [Core] Command registered under key boop +[Log] [Core] Command registered under key roll +[Log] [Core] Command registered under key choose +[Log] [Core] Command registered under key help +[Log] [Core] Command registered under key info +[Log] [Core] Command registered under key about +[Log] [Core] Command registered under key vote +[Log] [Core] Command registered under key results +[Log] [Core] Command registered under key showpoll +[Log] [Core] Command registered under key wolfram +[Log] [Core] Command registered under key c++ +[Log] [Core] Command registered under key g++ +[Log] [Core] Command registered under key cplus +[Log] [Core] Command registered under key cpp +[Log] [Core] Command registered under key java +[Log] [Core] Command registered under key jdoodle +[Log] [Core] Command registered under key beans +[Log] [Core] Command registered under key role +[Log] [Core] Command registered under key bet +[Log] [Core] Command registered under key map +[Log] [Core] Command registered under key rpstart +[Log] [Core] Command registered under key rpend +[Log] [Core] Command registered under key tony +[Log] [Core] Command registered under key stark +[Log] [Core] Command registered under key dontfeelgood +[Log] [Core] Command registered under key dontfeelsogood +[Log] [Core] Command registered under key blur +[Log] [Core] Command registered under key eightball +[Log] [Core] Command registered under key 8ball diff --git a/commands.config b/commands.config index 257a7e9..a74d196 100644 --- a/commands.config +++ b/commands.config @@ -39,3 +39,4 @@ guildroleremove=1 guildroleadd=1 guildroleallowed=1 fetch=1 +guildrolenotallowed=1 diff --git a/locCommands.config b/locCommands.config index 93af80c..6bd349a 100644 --- a/locCommands.config +++ b/locCommands.config @@ -12,6 +12,7 @@ blur= choose= poll= rpstart= +guildrolenotallowed= bet= perish, thenperish= teey= diff --git a/locStrings.config b/locStrings.config index b6e48f9..78593ee 100644 --- a/locStrings.config +++ b/locStrings.config @@ -1,6 +1,11 @@ [CommandPollManage] PollManageInfo='start' will start a new poll with the query of the line you put after, 'choice' will add a choice to the poll, 'stop' will end the poll +[CommandGuildRoleNotAllowed] +GuildRoleNotAllowedFailure= +GuildRoleNotAllowedSuccess= +GuildRoleNotAllowedInfo= + [CommandBeansShow] BeansShowDisplay=You have %s beans! BeansShowInfo=Displays how many beans you have @@ -33,8 +38,8 @@ GuildRoleAddInfo=Add a role to yourself! [CommandRole] RoleInfo=Will show the current role you have, Admins can change others roles with input of 'role x @y' with x being blacklist, general, mod, or admin. Blacklist will not allow the user to interact with kitty anymore, general mod and admin will give the user access to those commands. -RoleStandardResponse=Your role is -RoleError=You aren't allowed to do that! You must have the KittyRole '%' or higher! +RoleStandardResponse=Your role is %s +RoleError=You aren't allowed to do that! You must have the KittyRole '%s' or higher! RoleChanged=Changed %s to role `%s`! RoleNeededRole=Please enter `general`, `mod`, or `admin`! diff --git a/plugins/forbiddenword.lua b/plugins/forbiddenword.lua new file mode 100644 index 0000000..c6dd63c --- /dev/null +++ b/plugins/forbiddenword.lua @@ -0,0 +1,19 @@ +local time = os.time(); + +function plugin(message, user) + if(string.match(string.lower(message), "purple"))then + local timedif = os.time() - time; + time = os.time(); + days = (timedif / (60*60*24)); + hours = ((timedif / (60*60)) % 24); + mins = ((timedif / (60)) % 60); + secs = timedif % 60; + return "*GASP!!!* \n" .. user.name .. " said **THE** word! It's been " .. round(days) .. " days, " .. round(hours) .. " hours, " .. round(mins) .. " minutes, and " .. round(secs) .. " seconds since the last time!"; + end + + return nil; +end + +function round(num) + return math.floor(num + 0.5) +end \ No newline at end of file diff --git a/src/commands/CommandGuildRoleNotAllowed.java b/src/commands/CommandGuildRoleNotAllowed.java new file mode 100644 index 0000000..3d12593 --- /dev/null +++ b/src/commands/CommandGuildRoleNotAllowed.java @@ -0,0 +1,39 @@ +package commands; + +import core.Command; +import core.LocStrings; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.Response; +import dataStructures.UserInput; + +public class CommandGuildRoleNotAllowed extends Command +{ + public CommandGuildRoleNotAllowed(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public String HelpText() { return LocStrings.Stub("GuildRoleNotAllowedInfo"); } + + @Override + public void OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) + { + String [] roles = input.args.split(","); + String role; + for(int i = 0; i < roles.length; i++) + { + role = roles[i].trim(); + if(guild.allowedRole.contains(role)) + { + guild.allowedRole.remove(role); + res.Call(LocStrings.Stub("GuildRoleNotAllowedSuccess")); + } + else + { + res.Call(String.format(LocStrings.Stub("GuildRoleNotAllowedFailure"), role)); + } + } + } +} \ No newline at end of file diff --git a/src/commands/CommandStats.java b/src/commands/CommandStats.java index 7f4f254..593ff66 100644 --- a/src/commands/CommandStats.java +++ b/src/commands/CommandStats.java @@ -26,13 +26,17 @@ public class CommandStats extends Command String out = "```\n"; Stats stats = Stats.instance; + long seen = stats.GetMessagesSeen(); + long processed = stats.GetCommandsProcessed(); + out += "----- [General] -----\n"; - out += " Messages observed: " + stats.GetMessagesSeen() + "\n"; - out += "Commands processed: " + stats.GetCommandsProcessed() + "\n"; + out += " Messages observed: " + seen + "\n"; + out += "Commands processed: " + processed + "\n"; + out += " Command invoke %: " + ((int)((processed / (float)seen) * 1000)) / 10.0f + "%\n"; out += " KittyBot uptime: " + stats.GetFormattedUptime() + "\n"; out += "\n"; out += "----- [Health] -----\n"; - out += " SMT cores: " + stats.GetCPUAvailable() + "\n"; + out += " SMT cores: " + stats.GetCPUAvailable() + "\n"; // If CPU load works on this OS, list it. double CPULoad = stats.GetSystemCPULoad(); @@ -46,20 +50,20 @@ public class CommandStats extends Command Integer timed_waiting = data.states.get(Thread.State.TIMED_WAITING); Integer waiting = data.states.get(Thread.State.WAITING); - out += " Child threads:" - + " run: " + (runnable == null ? 0 : runnable) - + " block: " + (blocked == null ? 0 : blocked) - + " sleep: " + (timed_waiting == null ? 0 : timed_waiting) - + " wait: " + (waiting == null ? 0 : waiting) - + " term: " + (terminated == null ? 0 : terminated) + out += " Threads:" + + " run-" + (runnable == null ? 0 : runnable) + + " block-" + (blocked == null ? 0 : blocked) + + " sleep-" + (timed_waiting == null ? 0 : timed_waiting) + + " wait-" + (waiting == null ? 0 : waiting) + + " term-" + (terminated == null ? 0 : terminated) + "\n"; Integer guildCount = stats.GetGuildCount(); Integer userCount = stats.GetUserCount(); - out += "\n----- [Counts] -----\n" - + "Guilds: " + guildCount + "\n" - + " Users: " + userCount; + out += "\n----- [Cache] -----\n" + + "Cached Guilds: " + guildCount + "\n" + + " Cached Users: " + userCount; out += "\n```"; res.Call(out); diff --git a/src/core/ObjectBuilderFactory.java b/src/core/ObjectBuilderFactory.java index ada6602..484cca9 100644 --- a/src/core/ObjectBuilderFactory.java +++ b/src/core/ObjectBuilderFactory.java @@ -342,6 +342,7 @@ public class ObjectBuilderFactory manager.Register(LocCommands.Stub("rating"), new CommandRating(KittyRole.Admin, KittyRating.Safe)); manager.Register(LocCommands.Stub("indicator"), new CommandChangeIndicator(KittyRole.Admin, KittyRating.Safe)); manager.Register(LocCommands.Stub("guildroleallowed"), new CommandGuildRoleAllowed(KittyRole.Admin, KittyRating.Safe)); + manager.Register(LocCommands.Stub("guildrolenotallowed"), new CommandGuildRoleNotAllowed(KittyRole.Admin, KittyRating.Safe)); manager.Register(LocCommands.Stub("poll"), new CommandPollManage(KittyRole.Mod, KittyRating.Safe)); manager.Register(LocCommands.Stub("givebeans"), new CommandGiveBeans(KittyRole.Mod, KittyRating.Safe)); diff --git a/src/core/lua/Plugin.java b/src/core/lua/Plugin.java index b58a87c..24add7a 100644 --- a/src/core/lua/Plugin.java +++ b/src/core/lua/Plugin.java @@ -35,11 +35,9 @@ public class Plugin contents = contentBuilder.toString(); globals = JsePlatform.standardGlobals(); - + globals.load(contents).call(); func_plugin = globals.get("plugin"); - - String output = null; } catch (IOException e) { @@ -47,11 +45,11 @@ public class Plugin } } - public String Run(String args) + public String Run(String args, PluginUser user) { try { - LuaValue res = func_plugin.call(LuaValue.valueOf(args)); + LuaValue res = func_plugin.call(LuaValue.valueOf(args), user.AsLua()); if(!res.isnil()) return res.toString(); diff --git a/src/core/lua/PluginManager.java b/src/core/lua/PluginManager.java index 90593c3..a0e98a2 100644 --- a/src/core/lua/PluginManager.java +++ b/src/core/lua/PluginManager.java @@ -6,6 +6,8 @@ import java.nio.file.Paths; import java.util.ArrayList; import java.util.stream.Stream; +import dataStructures.KittyUser; + // Reads in, handles, and manipulates plugins. Plugins are loaded in the order they appear in the folder. public class PluginManager { @@ -37,12 +39,12 @@ public class PluginManager // Runs all plugins, returning when it gets a non-nill result. // Otherwise, returns null. - public String RunAll(String input) + public String RunAll(String input, KittyUser user) { for(int i = 0; i < plugins.size(); ++i) { Plugin plugin = plugins.get(i); - String out = plugin.Run(input); + String out = plugin.Run(input, new PluginUser(user)); if(out != null) { diff --git a/src/core/lua/PluginStructure.java b/src/core/lua/PluginStructure.java new file mode 100644 index 0000000..989d46d --- /dev/null +++ b/src/core/lua/PluginStructure.java @@ -0,0 +1,12 @@ +package core.lua; + +import org.luaj.vm2.LuaValue; +import org.luaj.vm2.lib.jse.CoerceJavaToLua; + +public class PluginStructure +{ + public LuaValue AsLua() + { + return CoerceJavaToLua.coerce(this); + } +} diff --git a/src/core/lua/PluginUser.java b/src/core/lua/PluginUser.java new file mode 100644 index 0000000..2a46fc2 --- /dev/null +++ b/src/core/lua/PluginUser.java @@ -0,0 +1,13 @@ +package core.lua; + +import dataStructures.KittyUser; + +public class PluginUser extends PluginStructure +{ + public String name; + + public PluginUser(KittyUser user) + { + this.name = user.name; + } +} diff --git a/src/dataStructures/KittyRP.java b/src/dataStructures/KittyRP.java index 138d308..9eb0be8 100644 --- a/src/dataStructures/KittyRP.java +++ b/src/dataStructures/KittyRP.java @@ -53,6 +53,7 @@ public class KittyRP while(!log.isEmpty()) { writer.println(log.get(0)); + writer.flush(); log.remove(0); } writer.close(); diff --git a/src/main/Main.java b/src/main/Main.java index 37edf6f..aa432e0 100644 --- a/src/main/Main.java +++ b/src/main/Main.java @@ -3,6 +3,7 @@ package main; import javax.security.auth.login.LoginException; import core.*; import core.lua.PluginManager; +import core.lua.PluginUser; import dataStructures.KittyChannel; import dataStructures.KittyGuild; import dataStructures.KittyRole; @@ -36,6 +37,7 @@ public class Main extends ListenerAdapter public static void main(String[] args) throws InterruptedException, LoginException, Exception { // Factory startup. The ordering is intentional. + GlobalLog.initialize(); databaseManager = ObjectBuilderFactory.ConstructDatabaseManager(); commandEnabler = ObjectBuilderFactory.ConstructCommandEnabler(); commandManager = ObjectBuilderFactory.ConstructCommandManager(commandEnabler); @@ -51,7 +53,7 @@ public class Main extends ListenerAdapter @Override public void onGuildMessageReceived(GuildMessageReceivedEvent event) - { + { // Tweak the event as necessary if(!PreProcessSetup(event)) return; @@ -70,19 +72,16 @@ public class Main extends ListenerAdapter return; // Track beans! - user.ChangeBeans(1); + user.ChangeBeans(1); // RP logging system RPManager.instance.addLine(channel, user, input); - // - - // Attempt to spin up a command. If the command doesn't exist. // Run plugins right before invoking the commands but after all other setup. if(commandManager.InvokeOnNewThread(guild, channel, user, input, response) == false) { - String pluginOutput = pluginManager.RunAll(input.message); + String pluginOutput = pluginManager.RunAll(input.message, user); if(pluginOutput != null) response.Call(pluginOutput); diff --git a/src/utils/GlobalLog.java b/src/utils/GlobalLog.java index 2cf28b9..5914d59 100644 --- a/src/utils/GlobalLog.java +++ b/src/utils/GlobalLog.java @@ -1,15 +1,33 @@ package utils; +import java.io.FileNotFoundException; +import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + public class GlobalLog { private static final String log = "Log"; private static final String warn = "Warning"; private static final String error = "ERROR"; private static final String fatal = "FATAL"; + private static PrintWriter outputLog; + + public static void initialize() throws FileNotFoundException, UnsupportedEncodingException + { + DateFormat dF = new SimpleDateFormat("yyyy_MM_dd_HH-mm"); + Date today = new Date(); + outputLog = new PrintWriter((dF.format(today) + ".log"), "UTF-8"); + } private static void Write(String status, LogFilter filter, String body) { - System.out.println("[" + status + "] " + "[" + filter.name() + "] " + body); + String logLine = "[" + status + "] " + "[" + filter.name() + "] " + body; + outputLog.write(logLine + "\n"); + outputLog.flush(); + System.out.println(logLine); } public static void Log(String msg) { Write(log, LogFilter.Debug, msg); }