manuelgu / discordmc Goto Github PK
View Code? Open in Web Editor NEWA Discord <-> Minecraft Chat Gateway for Spigot
Home Page: https://www.spigotmc.org/resources/17067
License: GNU General Public License v2.0
A Discord <-> Minecraft Chat Gateway for Spigot
Home Page: https://www.spigotmc.org/resources/17067
License: GNU General Public License v2.0
This is despite logout messages being set to "true" in the config file. All other messages are sent to Discord correctly.
While using McMMO party chat, all chat sent to a private party is sent to discord as a normal message. McMMO uses the party chat toggle: /p
, which turns 'on' or turns 'off' party chat. When party chat is turned on, you type in chat as normal and the message is only sent to other players online in your party, not global chat. These messages are being sent to discord either way.
Not a program issue, but a compatibility issue.
Also, I have commented on Issue #9, as I am also having this problem.
Running server paper spigot 1.11.2-R0.1, DiscordMC version 1.4.8, McMMO version 1.5.07
Didn't know where to put this but there isn't an option for the discord channel to display the time the MC messages are sent which would be awesome
Show all messages coming from Discord in console as well. Make this an opt-in thing.
I need help with this, please.
If I turn off these options, players are not added/removed from DiscordMC.getSubscribedPlayers() on login/logout and the chat will not work for them, because isSubscribed() returns false.
send_game_login: false
send_game_logout: false
Lines below should be placed at the start of a listener method (before setting and permission check), and not at the end of it.
// Add player as a permissive player
DiscordMC.getSubscribedPlayers().add(event.getPlayer().getUniqueId());
// Remove player as a permissive player
DiscordMC.getSubscribedPlayers().remove(event.getPlayer().getUniqueId());
Hi,
I am using DiscordMC with a bot account connected to multiple servers.
However, it will not connect to the server I want to connect. It doesn't work as I think...
I hope I can specify the connection destination in the configuration file.
I am sorry, but not good English.
I knew I could count on you.
--- Server Data ---
Spigot 1.8.8
DiscordMC 1.4.12
Hi! First off: https://hastebin.com/fuduqeloti
From MC to Discord:
The bot sends successfully to discord when I type /discord send somechannel Hello
The bot doesn't send what people are typing into chat, however.
Only things admins say are sent to Discord.
From Discord to MC:
When people type in discord, it gets sent to the server as "(discord [channelhere]) usernamehere >> message", but no MC users actually see the message in chat.
Only admins see the messages.
We use PermissionsEX and I added the discordmc.chat permission to the main group that all users belong to.
What should I do?
Thanks!
I would like to use this plugin on my 1.20 Spigot Server
Hey,
I recently tried to install this on my 1.11 mc server and i see that the plugin doesn't load at all and there's nothing in the logs.
I am running my server on my debian vps.
Thanks.
Possible fix: Discord4J.disableAudio()
java.lang.RuntimeException: Cannot call method public void sx.blah.discord.api.internal.DiscordWS#onMessage(org.eclipse.jetty.websocket.api.Session, byte[], int, int) with args: [org.eclipse.jetty.websocket.common.WebSocketSession, [B, java.lang.Integer, java.lang.Integer]
at org.eclipse.jetty.websocket.common.events.annotated.CallableMethod.unwrapRuntimeException(CallableMethod.java:94)
at org.eclipse.jetty.websocket.common.events.annotated.CallableMethod.call(CallableMethod.java:76)
at org.eclipse.jetty.websocket.common.events.annotated.OptionalSessionCallableMethod.call(OptionalSessionCallableMethod.java:68)
at org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onBinaryMessage(JettyAnnotatedEventDriver.java:124)
at org.eclipse.jetty.websocket.common.message.SimpleBinaryMessage.messageComplete(SimpleBinaryMessage.java:68)
at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.appendMessage(AbstractEventDriver.java:66)
at org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onBinaryFrame(JettyAnnotatedEventDriver.java:116)
at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(AbstractEventDriver.java:157)
at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(WebSocketSession.java:376)
at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(ExtensionStack.java:220)
at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Parser.java:220)
at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:256)
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:679)
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:511)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:202)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchFieldError: RESOURCE_PREFIX
at sx.blah.discord.api.internal.Opus.getNative(Opus.java:30)
at sx.blah.discord.api.internal.Opus.<clinit>(Opus.java:52)
at sx.blah.discord.handle.audio.impl.AudioManager.getEncoderForChannels(AudioManager.java:135)
at sx.blah.discord.handle.audio.impl.AudioManager.<init>(AudioManager.java:40)
at sx.blah.discord.handle.impl.obj.Guild.<init>(Guild.java:120)
at sx.blah.discord.handle.impl.obj.Guild.<init>(Guild.java:102)
at sx.blah.discord.api.internal.DiscordUtils.getGuildFromJSON(DiscordUtils.java:243)
at sx.blah.discord.api.internal.DiscordWS.guildCreate(DiscordWS.java:694)
at sx.blah.discord.api.internal.DiscordWS.onMessage(DiscordWS.java:371)
at sx.blah.discord.api.internal.DiscordWS.onMessage(DiscordWS.java:1117)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.jetty.websocket.common.events.annotated.CallableMethod.call(CallableMethod.java:71)
... 24 common frames omitted
Hello, this is a feature request.
Please add a configuration settings for the Discord Bot to ignore messages sent from other bots and Webhooks.
Thank you.
Hi there,
Hopefully this is still the right place to submit , and you're still working on the bot.
Since it's not been updated to the latest versions I'm also unsure if it can still live up to its fullest expectations.
Anyhow, on my server (1.14.4, then 1.15.2) I've been having the problem where the bot just stops responding after a while. Like at first it works just fine, but after an hour or so it stops sending messages back and forth. Also no join/leave/death messages. When I use /discord login it says that it's already online. (it does still show as on online in Discord).
Here is the output from the debug command if it helps: https://hastebin.com/olidogadep
Hello there, so on my servers we use DiscordMC but have it on 3 servers, Hub, Prison and Survival.
The plugin works fine on Hub and Survival but just refuses to work on Prison.
Here is what the console says on loading the plugin..
`[16:20:02] [Server thread/INFO]: [DiscordMC] Enabling DiscordMC v1.5.0
[16:20:02] [Server thread/WARN]: [Server thread] INFO org.eclipse.jetty.util.log - Logging initialized @2392947ms to org.eclipse.jetty.util.log.Slf4jLog
[16:20:02] [Server thread/WARN]: [Server thread] INFO sx.blah.discord.Discord4J - Discord4J v2.9.3 4bb34cf (https://github.com/austinv11/Discord4J)
[16:20:02] [Server thread/WARN]: [Server thread] INFO sx.blah.discord.Discord4J - A Java binding for the official Discord API, forked from the inactive https://github.com/nerd/Discord4J. Copyright (c) 2017, Licensed under GNU LGPLv3
[16:20:02] [Server thread/WARN]: [Server thread] INFO sx.blah.discord.Discord4J - Disabled audio.
[16:20:03] [Server thread/ERROR]: Error occurred while enabling DiscordMC v1.5.0 (Is it up to date?)
java.lang.VerifyError: class com.fasterxml.jackson.databind.deser.SettableBeanProperty$Delegating overrides final method getDeclaringClass.()Ljava/lang/Class;
at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_161]
at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[?:1.8.0_161]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.8.0_161]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) ~[?:1.8.0_161]
at java.net.URLClassLoader.access$100(URLClassLoader.java:73) ~[?:1.8.0_161]
at java.net.URLClassLoader$1.run(URLClassLoader.java:368) ~[?:1.8.0_161]
at java.net.URLClassLoader$1.run(URLClassLoader.java:362) ~[?:1.8.0_161]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_161]
at java.net.URLClassLoader.findClass(URLClassLoader.java:361) ~[?:1.8.0_161]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.plugin.java.JavaPluginLoader.getClassByName(JavaPluginLoader.java:195) ~[server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:97) ~[server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[server.jar:git-Spigot-21fe707-e1ebe52]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_161]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_161]
at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_161]
at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[?:1.8.0_161]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.8.0_161]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) ~[?:1.8.0_161]
at java.net.URLClassLoader.access$100(URLClassLoader.java:73) ~[?:1.8.0_161]
at java.net.URLClassLoader$1.run(URLClassLoader.java:368) ~[?:1.8.0_161]
at java.net.URLClassLoader$1.run(URLClassLoader.java:362) ~[?:1.8.0_161]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_161]
at java.net.URLClassLoader.findClass(URLClassLoader.java:361) ~[?:1.8.0_161]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.plugin.java.JavaPluginLoader.getClassByName(JavaPluginLoader.java:195) ~[server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:97) ~[server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[server.jar:git-Spigot-21fe707-e1ebe52]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_161]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_161]
at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_161]
at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[?:1.8.0_161]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.8.0_161]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) ~[?:1.8.0_161]
at java.net.URLClassLoader.access$100(URLClassLoader.java:73) ~[?:1.8.0_161]
at java.net.URLClassLoader$1.run(URLClassLoader.java:368) ~[?:1.8.0_161]
at java.net.URLClassLoader$1.run(URLClassLoader.java:362) ~[?:1.8.0_161]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_161]
at java.net.URLClassLoader.findClass(URLClassLoader.java:361) ~[?:1.8.0_161]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.plugin.java.JavaPluginLoader.getClassByName(JavaPluginLoader.java:195) ~[server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:97) ~[server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[server.jar:git-Spigot-21fe707-e1ebe52]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_161]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_161]
at com.fasterxml.jackson.module.afterburner.deser.PropertyMutatorCollector.addStringField(PropertyMutatorCollector.java:78) ~[?:?]
at com.fasterxml.jackson.module.afterburner.deser.DeserializerModifier.findOptimizableProperties(DeserializerModifier.java:161) ~[?:?]
at com.fasterxml.jackson.module.afterburner.deser.DeserializerModifier.updateBuilder(DeserializerModifier.java:58) ~[?:?]
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:236) ~[?:?]
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:141) ~[?:?]
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:403) ~[?:?]
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:349) ~[?:?]
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:264) ~[?:?]
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244) ~[?:?]
at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142) ~[?:?]
at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:476) ~[?:?]
at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:3899) ~[?:?]
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3794) ~[?:?]
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2929) ~[?:?]
at sx.blah.discord.api.internal.Requests$Request.makeRequest(Requests.java:180) ~[?:?]
at sx.blah.discord.api.internal.DiscordClientImpl.obtainGateway(DiscordClientImpl.java:371) ~[?:?]
at sx.blah.discord.api.internal.DiscordClientImpl.login(DiscordClientImpl.java:394) ~[?:?]
at eu.manuelgu.discordmc.DiscordMC.onEnable(DiscordMC.java:137) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:357) [server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:317) [server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload(CraftServer.java:741) [server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.Bukkit.reload(Bukkit.java:535) [server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [server.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) [server.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [server.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [server.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [server.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [server.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [server.jar:git-Spigot-21fe707-e1ebe52]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_161]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_161]
at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [server.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [server.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [server.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [server.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [server.jar:git-Spigot-21fe707-e1ebe52]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_161]
Thanks anyways.
Best regards,
Obey
As it seems, for the bot to send any messages or the user be able to send anything, discord toggle
has to be used. Before that the bot will not send messages in either direction.
Having the chat possibility be a thing per default could be nice.
[21:06:59 ERROR]: Could not pass event AsyncPlayerChatEvent to DiscordMC v1.4.11-SNAPSHOT
org.bukkit.event.EventException
at org.bukkit.plugin.EventExecutor$1.execute(EventExecutor.java:46) ~[patched_1.11.2.jar:git-Paper-1057]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:74) ~[patched_1.11.2.jar:git-Paper-1057]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[patched_1.11.2.jar:git-Paper-1057]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:517) [patched_1.11.2.jar:git-Paper-1057]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:499) [patched_1.11.2.jar:git-Paper-1057]
at net.minecraft.server.v1_11_R1.PlayerConnection.chat(PlayerConnection.java:1299) [patched_1.11.2.jar:git-Paper-1057]
at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:1214) [patched_1.11.2.jar:git-Paper-1057]
at net.minecraft.server.v1_11_R1.PacketPlayInChat$1.run(PacketPlayInChat.java:39) [patched_1.11.2.jar:git-Paper-1057]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_121]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_121]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]
Caused by: java.lang.IllegalArgumentException: Illegal group reference
at java.util.regex.Matcher.appendReplacement(Matcher.java:857) ~[?:1.8.0_121]
at java.util.regex.Matcher.replaceAll(Matcher.java:955) ~[?:1.8.0_121]
at java.lang.String.replaceAll(String.java:2223) ~[?:1.8.0_121]
at eu.manuelgu.discordmc.listener.ChatListener.onAsyncPlayerChat(ChatListener.java:59) ~[?:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor145.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor$1.execute(EventExecutor.java:44) ~[patched_1.11.2.jar:git-Paper-1057]
... 12 more
[01:13:01] [Server thread/INFO]: silverforte issued server command: /discord send general 1
[01:13:01] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'discord' in plugin DiscordMC v1.4.9
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot-1.11.2.jar:git-Spigot-7d78b81-775f1e1]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot-1.11.2.jar:git-Spigot-7d78b81-775f1e1]
at org.bukkit.craftbukkit.v1_11_R1.CraftServer.dispatchCommand(CraftServer.java:650) ~[spigot-1.11.2.jar:git-Spigot-7d78b81-775f1e1]
at net.minecraft.server.v1_11_R1.PlayerConnection.handleCommand(PlayerConnection.java:1344) [spigot-1.11.2.jar:git-Spigot-7d78b81-775f1e1]
at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:1179) [spigot-1.11.2.jar:git-Spigot-7d78b81-775f1e1]
at net.minecraft.server.v1_11_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot-1.11.2.jar:git-Spigot-7d78b81-775f1e1]
at net.minecraft.server.v1_11_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot-1.11.2.jar:git-Spigot-7d78b81-775f1e1]
at net.minecraft.server.v1_11_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.11.2.jar:git-Spigot-7d78b81-775f1e1]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_121]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_121]
at net.minecraft.server.v1_11_R1.SystemUtils.a(SourceFile:46) [spigot-1.11.2.jar:git-Spigot-7d78b81-775f1e1]
at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:739) [spigot-1.11.2.jar:git-Spigot-7d78b81-775f1e1]
at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:399) [spigot-1.11.2.jar:git-Spigot-7d78b81-775f1e1]
at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:675) [spigot-1.11.2.jar:git-Spigot-7d78b81-775f1e1]
at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:574) [spigot-1.11.2.jar:git-Spigot-7d78b81-775f1e1]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_121]
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source) ~[?:1.8.0_121]
at java.util.ArrayList.get(Unknown Source) ~[?:1.8.0_121]
at eu.manuelgu.discordmc.DiscordCommand.onCommand(DiscordCommand.java:149) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.11.2.jar:git-Spigot-7d78b81-775f1e1]
... 15 more
I can't figure out. Also running any cmds returns an error. Bot can't login.
After dying 2 times while the death messages are enabled i always get this exception.
[19:55:05] [Async Chat Thread - #1/INFO]: �[0;36;1m[�[0;37;1m�[0;31;22mMotherOfAllNoobs�[m�[0;36;1m] ,,,�[m
[19:56:22] [RequestBuffer Initial Executor/ERROR]: [DiscordMC] Critical issue while sending message.. See stacktrace below
[19:56:22] [RequestBuffer Initial Executor/WARN]: sx.blah.discord.util.DiscordException: Error on request to https://discordapp.com/api/channels/297900394674257927/messages. Received response code 400. With response text: {"code": 50006, "message": "Cannot send an empty message"}
[19:56:22] [RequestBuffer Initial Executor/WARN]: at sx.blah.discord.api.internal.Requests$Request.request(Requests.java:310)
[19:56:22] [RequestBuffer Initial Executor/WARN]: at sx.blah.discord.api.internal.Requests$Request.request(Requests.java:244)
[19:56:22] [RequestBuffer Initial Executor/WARN]: at sx.blah.discord.api.internal.Requests$Request.makeRequest(Requests.java:233)
[19:56:22] [RequestBuffer Initial Executor/WARN]: at sx.blah.discord.api.internal.Requests$Request.makeRequest(Requests.java:187)
[19:56:22] [RequestBuffer Initial Executor/WARN]: at sx.blah.discord.api.internal.Requests$Request.makeRequest(Requests.java:133)
[19:56:22] [RequestBuffer Initial Executor/WARN]: at sx.blah.discord.api.internal.Requests$Request.makeRequest(Requests.java:125)
[19:56:22] [RequestBuffer Initial Executor/WARN]: at sx.blah.discord.handle.impl.obj.Channel.sendMessage(Channel.java:608)
[19:56:22] [RequestBuffer Initial Executor/WARN]: at sx.blah.discord.util.MessageBuilder.build(MessageBuilder.java:215)
[19:56:22] [RequestBuffer Initial Executor/WARN]: at eu.manuelgu.discordmc.MessageAPI.lambda$sendToDiscord$3(MessageAPI.java:97)
[19:56:22] [RequestBuffer Initial Executor/WARN]: at sx.blah.discord.util.RequestBuffer$RequestFuture$RequestCallable.call(RequestBuffer.java:271)
[19:56:22] [RequestBuffer Initial Executor/WARN]: at java.util.concurrent.FutureTask.run(Unknown Source)
[19:56:22] [RequestBuffer Initial Executor/WARN]: at sx.blah.discord.util.RequestBuffer$RequestFuture.run(RequestBuffer.java:246)
[19:56:22] [RequestBuffer Initial Executor/WARN]: at sx.blah.discord.util.RequestBuffer$RequestFuture.access$200(RequestBuffer.java:147)
[19:56:22] [RequestBuffer Initial Executor/WARN]: at sx.blah.discord.util.RequestBuffer.lambda$request$0(RequestBuffer.java:32)
[19:56:22] [RequestBuffer Initial Executor/WARN]: at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
[19:56:22] [RequestBuffer Initial Executor/WARN]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[19:56:22] [RequestBuffer Initial Executor/WARN]: at java.lang.Thread.run(Unknown Source)
Version 1.4.4
[ERROR]: Error occurred while enabling DiscordMC v1.4.4 (Is it up to date?)java.lang.NoClassDefFoundError: gnu/trove/set/hash/THashSet at
eu.manuelgu.discordmc.DiscordMC.onEnable(DiscordMC.java:83) ~[?:?] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:292)
~[server.jar:git-Bukkit-8e5e90d] at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:329) [server.jar:git-Bukkit-8e5e90d] at
org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:404) [server.jar:git-Bukkit-8e5e90d] at
org.bukkit.craftbukkit.v1_10_R1.CraftServer.enablePlugin(CraftServer.java:358) [server.jar:git-Bukkit-8e5e90d] at
org.bukkit.craftbukkit.v1_10_R1.CraftServer.enablePlugins(CraftServer.java:320) [server.jar:git-Bukkit-8e5e90d] at
net.minecraft.server.v1_10_R1.MinecraftServer.t(MinecraftServer.java:404) [server.jar:git-Bukkit-8e5e90d] at
net.minecraft.server.v1_10_R1.MinecraftServer.l(MinecraftServer.java:369) [server.jar:git-Bukkit-8e5e90d] at
net.minecraft.server.v1_10_R1.MinecraftServer.a(MinecraftServer.java:324) [server.jar:git-Bukkit-8e5e90d] at
net.minecraft.server.v1_10_R1.DedicatedServer.init(DedicatedServer.java:243) [server.jar:git-Bukkit-8e5e90d] at
net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:514) [server.jar:git-Bukkit-8e5e90d] at java.lang.Thread.run(Thread.java:745)
[?:1.8.0_74]Caused by: java.lang.ClassNotFoundException: gnu.trove.set.hash.THashSet at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[?:1.8.0_74] at
org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:77) ~[server.jar:git-Bukkit-8e5e90d] at
org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:62) ~[server.jar:git-Bukkit-8e5e90d] at
java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_74] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_74] ... 12 more
>
Is there a dependency that I need installed on my server to make this work?
This appears to be similar to issue #10
java.lang.NoClassDefFoundError: gnu/trove/set/hash/THashSet
java.lang.ClassNotFoundException: gnu.trove.set.hash.THashSet
I get this error on server start and the plugin does not work. I'm using DiscordMC 1.4.12, Spigot 1.11.2, and Ubuntu 16.04.2
The command /discord debug
returns only /discord <args>
[14:31:00] [Server thread/INFO]: [DiscordMC] Enabling DiscordMC v1.4.12
[14:31:00] [Server thread/ERROR]: Error occurred while enabling DiscordMC v1.4.12 (Is it up to date? )
java.lang.NoClassDefFoundError: gnu/trove/set/hash/THashSet
at eu.manuelgu.discordmc.DiscordMC.onEnable(DiscordMC.java:107) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:271) ~[minecraft_server.jar: git-Bukkit-6e3cec8]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:329) [minecraf t_server.jar:git-Bukkit-6e3cec8]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:404) [minecra ft_server.jar:git-Bukkit-6e3cec8]
at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugin(CraftServer.java:361) [minecraft _server.jar:git-Bukkit-6e3cec8]
at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugins(CraftServer.java:323) [minecraf t_server.jar:git-Bukkit-6e3cec8]
at net.minecraft.server.v1_11_R1.MinecraftServer.t(MinecraftServer.java:411) [minecraft_serv er.jar:git-Bukkit-6e3cec8]
at net.minecraft.server.v1_11_R1.MinecraftServer.l(MinecraftServer.java:372) [minecraft_serv er.jar:git-Bukkit-6e3cec8]
at net.minecraft.server.v1_11_R1.MinecraftServer.a(MinecraftServer.java:327) [minecraft_serv er.jar:git-Bukkit-6e3cec8]
at net.minecraft.server.v1_11_R1.DedicatedServer.init(DedicatedServer.java:244) [minecraft_s erver.jar:git-Bukkit-6e3cec8]
at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:521) [minecraft_se rver.jar:git-Bukkit-6e3cec8]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
Caused by: java.lang.ClassNotFoundException: gnu.trove.set.hash.THashSet
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[?:1.8.0_131]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:77) ~[minecraft _server.jar:git-Bukkit-6e3cec8]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:62) ~[minecraft _server.jar:git-Bukkit-6e3cec8]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_131]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_131]
... 12 more
On initial deploy of this plugin, me and one other verified that chat worked bidirectionally. We rolled it out to the rest of our discord but left the channels private.
Do server users need to also be in the discord chat channel?
It loads and makes a config, then once you add the token it crashes.
https://gist.github.com/ProsperCraft/8e67dc97ac2b503ef9de4bae6ede4cf2
Hi! We have three chat channels on our server. Admin, Global, and Local. Currently, all chat gets sent to discord. Is there a way to only have Global chat sent to discord?
Thanks.
This happen on the server startup:
[10:46:40] [Server thread/INFO]: [DiscordMC] Enabling DiscordMC v1.4.11-SNAPSHOT
[10:46:41] [Server thread/WARN]: 2017-03-08 10:46:41.014:INFO::Server thread: Logging initialized @23767ms to org.eclipse.jetty.util.log.StdErrLog
[10:46:41] [Server thread/ERROR]: Error occurred while enabling DiscordMC v1.4.11-SNAPSHOT (Is it up to date?)
java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z
at com.fasterxml.jackson.databind.ObjectMapper.(ObjectMapper.java:564) ~[?:?]
at com.fasterxml.jackson.databind.ObjectMapper.(ObjectMapper.java:474) ~[?:?]
at sx.blah.discord.api.internal.DiscordUtils.(DiscordUtils.java:54) ~[?:?]
at sx.blah.discord.api.events.EventDispatcher.(EventDispatcher.java:28) ~[?:?]
at sx.blah.discord.api.internal.DiscordClientImpl.(DiscordClientImpl.java:118) ~[?:?]
at sx.blah.discord.api.ClientBuilder.build(ClientBuilder.java:199) ~[?:?]
at eu.manuelgu.discordmc.DiscordMC.onEnable(DiscordMC.java:124) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:271) ~[patched_1.11.2.jar:git-Paper-1057]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316) [patched_1.11.2.jar:git-Paper-1057]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:407) [patched_1.11.2.jar:git-Paper-1057]
at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugin(CraftServer.java:378) [patched_1.11.2.jar:git-Paper-1057]
at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugins(CraftServer.java:328) [patched_1.11.2.jar:git-Paper-1057]
at net.minecraft.server.v1_11_R1.MinecraftServer.t(MinecraftServer.java:437) [patched_1.11.2.jar:git-Paper-1057]
at net.minecraft.server.v1_11_R1.MinecraftServer.l(MinecraftServer.java:398) [patched_1.11.2.jar:git-Paper-1057]
at net.minecraft.server.v1_11_R1.MinecraftServer.a(MinecraftServer.java:336) [patched_1.11.2.jar:git-Paper-1057]
at net.minecraft.server.v1_11_R1.DedicatedServer.init(DedicatedServer.java:276) [patched_1.11.2.jar:git-Paper-1057]
at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:603) [patched_1.11.2.jar:git-Paper-1057]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]
[10:46:41] [Server thread/INFO]: [DiscordMC] Disabling DiscordMC v1.4.11-SNAPSHOT
[10:46:41] [Server thread/ERROR]: Error occurred while disabling DiscordMC v1.4.11-SNAPSHOT (Is it up to date?)
java.lang.NullPointerException
at eu.manuelgu.discordmc.DiscordMC.onDisable(DiscordMC.java:164) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:273) ~[patched_1.11.2.jar:git-Paper-1057]
at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:344) [patched_1.11.2.jar:git-Paper-1057]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:320) [patched_1.11.2.jar:git-Paper-1057]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:407) [patched_1.11.2.jar:git-Paper-1057]
at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugin(CraftServer.java:378) [patched_1.11.2.jar:git-Paper-1057]
at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugins(CraftServer.java:328) [patched_1.11.2.jar:git-Paper-1057]
at net.minecraft.server.v1_11_R1.MinecraftServer.t(MinecraftServer.java:437) [patched_1.11.2.jar:git-Paper-1057]
at net.minecraft.server.v1_11_R1.MinecraftServer.l(MinecraftServer.java:398) [patched_1.11.2.jar:git-Paper-1057]
at net.minecraft.server.v1_11_R1.MinecraftServer.a(MinecraftServer.java:336) [patched_1.11.2.jar:git-Paper-1057]
at net.minecraft.server.v1_11_R1.DedicatedServer.init(DedicatedServer.java:276) [patched_1.11.2.jar:git-Paper-1057]
at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:603) [patched_1.11.2.jar:git-Paper-1057]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]
I'm testing out the plugin and seem to have run into a minor quirk or a bug. The discord.chat permission doesn't appear to apply until after the player leaves and rejoins the server (and maybe after a plugin reload as well). Is this just a quirk of using a permission manager plugin or is this a bug with the plugin?
When a player on the game server sends a chat message ending in a backslash (not forward slash), an error is thrown and the message does not reach the Discord server. Here is a snippet of my server log with an example of this:
[15:27:17] [Event Dispatcher Handler/INFO]: [Discord] EbonJaeger» hey do messages with a <backslash> at the end still break?
[15:27:28] [Async Chat Thread - #10/ERROR]: Could not pass event AsyncPlayerChatEvent to DiscordMC v1.4.12
org.bukkit.event.EventException
at org.bukkit.plugin.EventExecutor$1.execute(EventExecutor.java:46) ~[patched_1.11.2.jar:git-Paper-1029]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:74) ~[patched_1.11.2.jar:git-Paper-1029]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[patched_1.11.2.jar:git-Paper-1029]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:517) [patched_1.11.2.jar:git-Paper-1029]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:499) [patched_1.11.2.jar:git-Paper-1029]
at net.minecraft.server.v1_11_R1.PlayerConnection.chat(PlayerConnection.java:1299) [patched_1.11.2.jar:git-Paper-1029]
at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:1214) [patched_1.11.2.jar:git-Paper-1029]
at net.minecraft.server.v1_11_R1.PacketPlayInChat$1.run(PacketPlayInChat.java:39) [patched_1.11.2.jar:git-Paper-1029]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_121]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_121]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]
Caused by: java.lang.IllegalArgumentException: character to be escaped is missing
at java.util.regex.Matcher.appendReplacement(Matcher.java:809) ~[?:1.8.0_121]
at java.util.regex.Matcher.replaceAll(Matcher.java:955) ~[?:1.8.0_121]
at java.lang.String.replaceAll(String.java:2223) ~[?:1.8.0_121]
at eu.manuelgu.discordmc.listener.ChatListener.onAsyncPlayerChat(ChatListener.java:59) ~[?:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor85.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor$1.execute(EventExecutor.java:44) ~[patched_1.11.2.jar:git-Paper-1029]
... 12 more
[15:27:28] [Async Chat Thread - #10/INFO]: [SMod] Hotasflames» lets find out<backslash>
Messages with a backslash in other spots do not cause this error, though the slash character is stripped from the message in the Discord channel. Likewise it will be stripped from a message from Discord to the Minecraft server. I'm not sure if this is intended behavior, however.
[06:54:00 WARN]: 1530474 [Event Dispatcher Handler] ERROR sx.blah.discord.Discord4J - Unhandled exception caught dispatching event MessageReceivedEvent
[06:54:00 WARN]: java.util.NoSuchElementException: No value present
[06:54:00 WARN]: at java.util.Optional.get(Optional.java:135)
[06:54:00 WARN]: at eu.manuelgu.discordmc.listener.DiscordEventListener.userChat(DiscordEventListener.java:66)
[06:54:00 WARN]: at sun.reflect.GeneratedMethodAccessor205.invoke(Unknown Source)
[06:54:00 WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[06:54:00 WARN]: at java.lang.reflect.Method.invoke(Method.java:498)
[06:54:00 WARN]: at sx.blah.discord.api.events.EventDispatcher.lambda$null$11(EventDispatcher.java:376)
[06:54:00 WARN]: at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:890)
[06:54:00 WARN]: at sx.blah.discord.api.events.EventDispatcher.lambda$null$12(EventDispatcher.java:374)
[06:54:00 WARN]: at java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1597)
[06:54:00 WARN]: at sx.blah.discord.api.events.EventDispatcher.lambda$null$13(EventDispatcher.java:373)
[06:54:00 WARN]: at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
[06:54:00 WARN]: at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
[06:54:00 WARN]: at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
[06:54:00 WARN]: at java.util.concurrent.ConcurrentHashMap$EntrySpliterator.forEachRemaining(ConcurrentHashMap.java:3606)
[06:54:00 WARN]: at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
[06:54:00 WARN]: at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
[06:54:00 WARN]: at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
[06:54:00 WARN]: at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
[06:54:00 WARN]: at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
[06:54:00 WARN]: at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
[06:54:00 WARN]: at sx.blah.discord.api.events.EventDispatcher.lambda$dispatch$17(EventDispatcher.java:372)
[06:54:00 WARN]: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[06:54:00 WARN]: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[06:54:00 WARN]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[06:54:00 WARN]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[06:54:00 WARN]: at java.lang.Thread.run(Thread.java:745)
Try to find a user matching string after @
(@someone
) and mention them.
https://discordapp.com/developers/docs/resources/channel#message-formatting
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.