Skip to content

Instantly share code, notes, and snippets.

@Blueyescat
Last active September 15, 2018 20:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Blueyescat/891eb4e820c4811a4120b165e0edf399 to your computer and use it in GitHub Desktop.
Save Blueyescat/891eb4e820c4811a4120b165e0edf399 to your computer and use it in GitHub Desktop.
Have a server console channel in Discord with this script!
options:
# The Discord bot token from https://discordapp.com/developers/applications
botToken: ""
# ID of the console channel
channel: "312345678910101214"
# Who can send console commands
admins: "012345678910111213", "312111019876543210" or "981713114610522013"
bot: "ServerConsole"
variable: ServerConsole
import:
java.lang.Runtime
java.util.regex.Pattern
org.bukkit.Bukkit
on skript load:
set {{@variable}::pluginManager} to Bukkit.getServer().getPluginManager()
set {{@variable}::queue} to ""
on load:
if {@bot} parsed as bot is not set:
login to {@botToken} with name {@bot}
set status of {@bot} to online
set {{@variable}::consoleChannel} to channel with id {@channel}
set {{@variable}::URLRegex} to Pattern.compile("(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?")
on unload:
set status of {@bot} to do not disturb
on log:
set {_line} to uncolored logged message
set {_loggerName} to logger name
if {_loggerName} is set:
if {{@variable}::pluginManager}.isPluginEnabled({_loggerName}):
set {_prefix} to "[%{_loggerName}%] "
else if logger name contains "jda":
set {_prefix} to "[%{_loggerName}%] "
else:
set {_prefix} to ""
else:
set {_prefix} to ""
set {_line} to "[%now formatted as ""HH:mm:ss""% %log level in upper case%] %{_prefix}%%uncolored {_line}%"
set {{@variable}::queue} to "%{{@variable}::queue}%%nl%%{_line}%"
# Surround links with < > so they won't show link preview embeds in the Discord console.
# I don't know why but it makes the links <<link>> (double) when i use regex replace?
function noURLPreviews(text: text) :: text:
if {_text} contains "s://" or "p://":
set {_matcher} to {{@variable}::URLRegex}.matcher({_text})
while {_matcher}.find():
set {_group} to {_matcher}.group(0)
replace {_group} with "<%{_group}%>" in {_text}
return {_text}
every a second:
if {{@variable}::queue} is not "":
set {{@variable}::queue} to noURLPreviews({{@variable}::queue})
if length of {{@variable}::queue} is greater than 2000:
set {_split::*} to split {{@variable}::queue} at nl
while {_split::*} is set:
set {_message} to ""
loop {_split::*}:
if length of {_message} + length of loop-value + 1 is smaller than 2000:
set {_message} to "%{_message}%%nl%%loop-value%"
delete {_split::%loop-index%}
send {_message} to {{@variable}::consoleChannel} with {@bot}
else:
send {{@variable}::queue} to {{@variable}::consoleChannel} with {@bot}
set {{@variable}::queue} to ""
function maxRAM() :: number:
return rounded (Runtime.getRuntime().maxMemory() / 1024) / 1024
function freeRAM() :: number:
return rounded (Runtime.getRuntime().freeMemory() / 1024) / 1024
function usedRAM() :: number:
set {_max} to maxRAM()
return {_max} - freeRAM()
every 3 second:
if {@bot} parsed as bot is set:
set topic of {{@variable}::consoleChannel} to "TPS from last 1m, 5m, 15m: %tps from last 1m%, %tps from last 5m%, %tps from last 15m% — RAM: %usedRAM()%/%maxRAM()%MB" with {@bot} parsed as bot
on guild message received seen by {@bot}:
if id of event-channel is {@channel}:
if id of event-user is {@admins}:
execute console command event-string
delete event-message with event-bot
on command:
if executor is console:
send ":arrow_right: %noURLPreviews(full command)%" to {{@variable}::consoleChannel} with {@bot} and store it in {_message}
add reaction ":repeat:" to reactions of (random message of {_message}) with {@bot}
on reaction added seen by {@bot}:
if id of event-channel is {@channel}:
if id of event-user is {@admins}:
if name of event-emote is "repeat":
execute console command subtext of (content of event-message) from character 15 to length of (content of event-message)
remove event-emote added by event-user from event-message
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment