お世話になります。Lunachatを愛用させて頂いております、watadoraと申します。
Lunachatで
1.グローバルチャンネル[global]
2.グループチャンネル[foober]
の2つのチャンネルを作成し、DiscordSRVとLunachatとの連携を行った際、
korarobo_さんとほぼ同一条件と思われますが、コンソールにエラーがはき出される問題がありましたので報告いたします。
こちらの方ではメッセージの送受信は問題無く機能しており、エラーだけが発生する様になっております。
是非ともLunachatとDiscordSRVとの連携を活用したく、エラーの対策をして頂けないでしょうか。
対策案として、下記2案を考えました。
(が、プログラムに疎い素人の意見ですので間違っていた場合はどうかご容赦下さい。)
①チャンネルチャットを非ログインユーザーに送信しないように処理する。
②非ログイン中はチャンネルチャットから一旦抜けた状態にする。
問題の詳細を下記に記載しますので、ご一読頂けます様、よろしくお願いいたします。
<詳細>
1.グローバルチャンネル[global]
Lunachat⇒Discord 問題なし
Discord⇒Lunachat 問題なし
2.グループチャンネル[foober]
Lunachat⇒Discord 問題なし
Discord⇒Lunachat 問題あり
⇒メッセージは問題無く送信されるがエラーが出ます。
(エラーのため送信すらされていないように見受けられますが、実際にはMinecraft上で受信を確認出来ます。)
エラーが出る条件は「[foober]に所属するメンバーの内、非ログインプレイヤーが1名以上居る場合」です。
Discord側からLunachatを経由して非ログインプレイヤーにメッセージを送ろうとする為エラーが発生していると思われます。
[global]グループはグローバルチャンネルのため、その様な処理が生じない為エラーが発生しないと考えます。
(1)問題が無い場合 ([foober]に所属するメンバーが全員ログインしているとき)
- コード: 全て選択
>ch list
[12:53:06 INFO]: ---------- チャンネルリスト ----------
[12:53:06 INFO]: | global(8/8)
[12:53:06 INFO]: | foober(1/1)
[12:53:06 INFO]: ----------------------------------
>ch info foober
[12:53:07 INFO]: ---------- チャンネル情報 ----------
[12:53:07 INFO]: | foober(1/1)
[12:53:07 INFO]: | watadora,
[12:53:07 INFO]: | フォーマット設定:
[12:53:07 INFO]: | &f[%color%ch&f]%prefix%username%suffix&a:&f %msg
[12:53:07 INFO]: ----------------------------------
[12:53:14 INFO]: [global]watadora: てすと
[12:53:19 INFO]: [global] [Dis] わたどら@watadora: てすと
[12:53:19 INFO]: [DiscordSRV] Chat: [Dis] わたどら@watadora: てすと
[12:53:23 INFO]: [foober]watadora: てすと
[12:53:29 INFO]: [foober] [Dis] わたどら@watadora: てすと
[12:53:29 INFO]: [DiscordSRV] Chat: [Dis] わたどら@watadora: てすと
(2)問題がある場合 ([foober]に所属するメンバーの内、非ログインプレイヤーが居る場合)
- コード: 全て選択
>ch list
[12:56:08 INFO]: ---------- チャンネルリスト ----------
[12:56:08 INFO]: | global(8/8)
[12:56:08 INFO]: | foober(1/2)
[12:56:08 INFO]: ----------------------------------
>ch info foober
[12:56:09 INFO]: ---------- チャンネル情報 ----------
[12:56:09 INFO]: | foober(1/2)
[12:56:09 INFO]: | @hogehoge,watadora,
[12:56:09 INFO]: | フォーマット設定:
[12:56:09 INFO]: | &f[%color%ch&f]%prefix%username%suffix&a:&f %msg
[12:56:09 INFO]: ----------------------------------
[12:56:16 INFO]: [global]watadora: てすと
[12:56:21 INFO]: [global] [Dis] わたどら@watadora: てすと
[12:56:21 INFO]: [DiscordSRV] Chat: [Dis] わたどら@watadora: てすと
[12:56:25 INFO]: [foober]watadora: てすと
[12:56:32 INFO]: [foober] [Dis] わたどら@watadora: てすと
[12:56:32 WARN]: [12:56:32] [Fatal] [JDA]: One of the EventListeners had an uncaught exception
[12:56:32 WARN]: [12:56:32] [Fatal] [JDA]: Encountered an exception:
[12:56:32 WARN]: [12:56:32] [Fatal] [JDA]: java.lang.NullPointerException
at com.scarsz.discordsrv.DiscordSRV.notifyPlayersOfMentions(DiscordSRV.java:773)
at com.scarsz.discordsrv.hooks.chat.LunaChatHook.broadcastMessageToChannel(LunaChatHook.java:51)
at com.scarsz.discordsrv.DiscordSRV.broadcastMessageToMinecraftServer(DiscordSRV.java:728)
at com.scarsz.discordsrv.listeners.DiscordListener.handleChat(DiscordListener.java:117)
at com.scarsz.discordsrv.listeners.DiscordListener.onGuildMessageReceived(DiscordListener.java:52)
at com.scarsz.discordsrv.jda.hooks.ListenerAdapter.onEvent(ListenerAdapter.java:166)
at com.scarsz.discordsrv.jda.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:64)
at com.scarsz.discordsrv.jda.handle.MessageReceivedHandler.handleDefaultMessage(MessageReceivedHandler.java:81)
at com.scarsz.discordsrv.jda.handle.MessageReceivedHandler.handleInternally(MessageReceivedHandler.java:50)
at com.scarsz.discordsrv.jda.handle.SocketHandler.handle(SocketHandler.java:38)
at com.scarsz.discordsrv.jda.requests.WebSocketClient.handleEvent(WebSocketClient.java:596)
at com.scarsz.discordsrv.jda.requests.WebSocketClient.onTextMessage(WebSocketClient.java:324)
at com.neovisionaries.ws.client.ListenerManager.callOnTextMessage(ListenerManager.java:352)
at com.neovisionaries.ws.client.ReadingThread.callOnTextMessage(ReadingThread.java:233)
at com.neovisionaries.ws.client.ReadingThread.callOnTextMessage(ReadingThread.java:211)
at com.neovisionaries.ws.client.ReadingThread.handleTextFrame(ReadingThread.java:910)
at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:693)
at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:102)
at com.neovisionaries.ws.client.ReadingThread.run(ReadingThread.java:61)
以上です。