Code Monkey home page Code Monkey logo

lunachat's Introduction

lunachat's People

Contributors

ucchyocean avatar laica-lunasys avatar tomo1560 avatar kisaragieffective avatar lazygon avatar dependabot[bot] avatar

Stargazers

Marcelektro avatar Soheil avatar ringoXD avatar  avatar Ramune avatar Overguacho avatar Hanku avatar 0 avatar Fyphen avatar  avatar Konosuke Sakai avatar K's Design avatar  avatar hageking avatar  avatar mendoitarou_ avatar HidemaruOwO avatar TACOWASA_183 avatar  avatar Naoki Ikeguchi avatar hato avatar kigawa avatar mongachi avatar Rintaro Itokawa avatar Neko7sora avatar りすりす/TwoSquirrels avatar A_JA_JP avatar Ryo Ando avatar Nakatai avatar テキシコ avatar New Dragon Warrior avatar Pitan avatar Honahuku avatar miku avatar huda0209 avatar kamu avatar  avatar black? avatar Buddy avatar Kengo Nakajima avatar Aodaruma avatar  avatar Barusugan PocketKie avatar tama avatar MEC11 avatar  avatar ねこかわいい avatar LEE3KFC avatar Takehiro Ogura avatar Veulx avatar  avatar  avatar T.K. avatar ラムダ avatar Unix avatar  avatar siloneco avatar rnlin avatar snake avatar hota avatar yuta avatar Lesmiscore avatar unchama avatar xsota avatar ken_kentan avatar  avatar Nana Sakisaka avatar  avatar  avatar  avatar

Watchers

James Cloos avatar  avatar  avatar ken_kentan avatar  avatar  avatar K's Design avatar

lunachat's Issues

Japanize機能(ローマ字変換機能)について

現在LunaChatに搭載されている、ローマ字変換機能(以下Japanize機能)についてですが、

チャットフォーマットの一つとして、(true,falseはそのまま)で、
&a[%ch]%prefix%username%suffix&a: %msg (%japanize)
という形で、Japanizeをどこに表示させるか という設定もできたらとおもいます。

文字が詰め過ぎになって見づらいという事もなくなります
(直接、中を変更ということをするといいと思いますが、やっぱりそれほどよくないというふうになった場合、もう一度変更・・・というふうになると手間になると思うので・・・。)

サーバーコンソールで「ch info (channel名)」を実行すると、NullPointerExceptionが起こる

サーバーコンソールで「ch info (channel名)」を実行すると、NullPointerExceptionが起こる。

【Exceptionの内容】

2013-09-09 23:01:01 [WARNING] Unexpected exception while parsing console command "ch info aaaa"
org.bukkit.command.CommandException: Unhandled exception executing command 'ch' in plugin LunaChat v2.3.2
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:191)
    at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServer.java:523)
    at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchServerCommand(CraftServer.java:512)
    at net.minecraft.server.v1_6_R2.DedicatedServer.ar(DedicatedServer.java:262)
    at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:227)
    at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486)
    at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419)
    at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)
Caused by: java.lang.NullPointerException
    at com.github.ucchyocean.lc.command.InfoCommand.runCommand(InfoCommand.java:97)
    at com.github.ucchyocean.lc.command.LunaChatCommand.onCommand(LunaChatCommand.java:78)
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    ... 8 more

管理者関連の権限設定ノードを、lunachat.* から lunachat-admin.* に移動する

管理者関連の権限設定ノードを、lunachat.* から lunachat-admin.* に移動する。
アスタリスクを使って、管理者設定の権限もまとめて設定できるようにするため。

具体的には、移動する権限は template、reload、japanize-other の3つ。
次のように再設定する。

  lunachat-admin.template:
    description: templateコマンドの使用権限
  lunachat-admin.reload:
    description: reloadコマンドの使用権限
  lunachat-admin.japanize-other:
    description: 他者のjapanizeオンオフ設定コマンドの使用権限
  lunachat-admin.*:
    children:
      lunachat-admin.template: true
      lunachat-admin.reload: true
      lunachat-admin.japanize-other: true
    description: 管理者向けの全コマンドの使用権限
    default: op

チャットフォーマットの単一化

現在、それぞれのチャンネルごとにチャットフォーマットの設定が格納されていますが、
1つにまとめることで、管理を楽になるかと思います。

たとえば、何かしら理由があり、チャットのフォーマットを変更したい場合、
デフォルトのを変更、その次にそれぞれのチャットのフォーマットを変更・・・・という
手間がかかってしまうので、ひとつにまとめることにより、
1つ変更すれば、全部変更 ということができるので、手間が省けてより簡単になると思います。

jpコマンドのusageメッセージが間違っている

/jp のみを実行したときに表示されるusageメッセージが、間違っている。

「/jp (name) [message] - 指定した人との1:1チャットを開始します。」

指定されているメッセージIDが間違っているようなので、修正する。

デフォルトの発言先をグローバルに設定しようとすると、NullPointerExceptionが発生する

FindBugsによるバグ可能性の発見。

【再現方法】
グローバルチャンネルを設定せずに、チャンネルチャットを利用している環境において、
デフォルトの発言先をグローバルに設定(「/ch join !」または「/ch !」)
しようとしたときに、NullPointerExceptionが発生する。

【解析情報】
下記の箇所で、LunaChatAPI#setDefaultChannel(playerName, channelName) の第2引数にnullを設定しており、

api.setDefaultChannel(player.getName(), null);

下記の箇所で、channelName.toLowerCase() を実行している。
defaultChannels.put(playerName, channelName.toLowerCase());

【対策内容】
ChannelManager#setDefaultChannel(playerName, channelName) の最初の部分で、
channelName の null評価を行い、nullの場合はマップから該当データを削除してreturnする。

hideコマンド、unhideコマンドの追加

【コマンドと仕様の概要】
/ch hide (channel) - 指定したチャンネルの発言内容を非表示にする。
※コマンドを実行した人の画面上でのみ非表示になります。
/ch unhide (channel) - 指定したチャンネルの発言内容を表示に戻す。

※ 「/ch list」実行時に、非表示にしているチャンネルは、暗い青で表示されます。
※ 「/ch info」実行時に、非表示にしているプレイヤーは、暗い青で表示されます。

ルームパスワード機能

チャットルームにパスワードを掛け、パスワードを知っているユーザーのみに入場を限定。

使い方:
入場方法(名前の例としてLockchと書いてあります)
/ch join Lockch
/ch Lockch

パスワードをオンにする
/ch password on

パスワードをオフにする
/ch password off

パスワードの変更
/ch password change
パスワードオンコマンドでは変更不可 のほうがいいのかも知れません。

tellやrコマンドでの個人チャットが存在するときに、第三者がチャンネル名指定でチャンネルに入れてしまう

tellやrコマンドでの個人チャットが存在するときに、第三者がチャンネル名指定でチャンネルに入れてしまう。

【再現手順】

  1. PlayerA が PlayerB に tell する。
      /tell PlayerB ちょっとよろしいでしょうか。
      この時点で、「PlayerA>PlayerB」という名前のチャンネルが作成される。
  2. PlayerB が返信する。
      /r はい、なんでしょうか。
      この時点で、「PlayerB>PlayerA」という名前のチャンネルが作成される。
  3. PlayerC が、次のコマンドを実行すると、チャンネルに入れてしまう。
      /ch join PlayerA>PlayerB
      /ch join PlayerB>PlayerA

Japanize機能のオンオフ

JapanizeChatを、コマンドによってオンオフする

/japanize off(on)

/ch や/lcでいいかとおもいましたが、チャンネルのこともあり、難しくなりそうでしたので、
このようにしました。

名前補完機能の追加

例えば、個人メッセージを送信する場合、
Lunasys というプレイヤー名の場合は、
/msg Lunasys あいうえお
と打たなくてはならないが、

/msg L あいうえお
でもできるようにする。

Laicaという名前のプレイヤーと
Lunasys という名前のプレイヤーと言ったように、
どちらともLの場合は、
二文字目のアルファベットで順番で若いものを認識する

現在、TABコンプリート機能でプレイヤー名が補完できますが、サーバーによってはその機能を切っているため、やはり必要だと思います。

Dynmapとの連携

ウェブマッププラグインDynmapにて、
チャットを表示されるようにする

表示の仕方は、サーバーで指定したフォーマット(ゲーム内での表示に使われるフォーマットを引用)
で表示する。
(表示するのは、GlobalChatとして指定したチャンネルのみを表示)

なお、Dynmap側での入力時は、Dynmapのを使う。

prefix の追加

pex から prefix を取得し、表示するようにする。

/lca と /lc(/ch) を統一する

やはり、チャンネル管理は誰でも扱いやすくするために、統一すべきかと思います。
/ch で扱うコマンドが大半なのに、/cha を使う必要はないと思います。

forceJoinChannels設定の追加

forceJoinChannels設定を追加する。

【主な要件】
イベントサーバー、サバイバルサーバーの用途で、参加者に強制的にいくつかのチャンネルへ参加させたい場合に使用する。

【設定内容】
StringListで指定する。
例) forceJoinChannels: ['W', 'Q', 'R']
   ↑この場合、サーバー参加時に、チャンネルWと、チャンネルQと、チャンネルRに参加する。
もしチャンネルが存在しない場合は、作成して入室する。

チャットのログの保存

入力されたチャット(送信されたチャット)
を、保存する仕組みです。

例:) plugins\LunaChat\log\2013-01-01\チャンネル名.txt(yml)

という形で、1日ごとにフォルダを新規作成をし、保存します。

現在、チャットをロギングする場合、server.txtの方で読めますが、
その他のログの読み込みに時間がかかる上、チャット以外(他のプラグインのメッセージなど)
が含まれているため、大変探しづらいためです。

この機能はconfig設定で変更が可能にします(デフォルトではTrue)

logginchat: true/false

チャンネルカラーの指定

チャンネル名にカラーをつける設定を追加します。

具体的には、
Globalチャンネルは、オレンジ色 
Staffチャンネルは、赤色。
などで設定します。

コマンドは、/ch modify で指定します。
コマンド例: [/ch modify color チャンネル名 &4]

チャンネル名がない場合は、チャットの発言対象になっているチャンネル名を指定したことにします。

(Globalチャンネルでコマンドを入力した場合は、Globalチャンネルの色を変更)

&4の部分はカラーコードです。
&hogehoge以外にも、
DARK_RED も使えるようにしたいです。

他のプラグインから連携するためのAPI提供

現在 ChannelManager でメソッド提供している部分に相当するものを、APIとして提供する。

現在、コマンドの処理内でエラー処理を完結させてしまっているところを、APIのメソッドで
Throws を付加して、独自のExceptionを投げてエラー通知する形式への変更が必須。
また、各種処理時にカスタムイベントを発行できるようにする。

【追加するAPI(案)】
LunaChatAPIクラスのメソッド
・public Set getChannelNames() throws LunaChatException
・public Set getChannelNamesByPlayer(String playerName)
・public String getDefaultChannel(String playerName)
・public void setDefaultChannel(String playerName, String channelName)
・public void removeDefaultChannel(String playerName)
・public Channel getChannel(String channelName)
・public Channel createChannel(String channelName)
・public void removeChannel(String channelName)

Channelクラス
・各フィールドを、protected から public へ変更
・serialize と deserialize を実装(issue #18

各種イベントクラス
・LunaChatChannelCreatedEvent
・LunaChatChannelRemovedEvent
・LunaChatChannelOptionChangedEvent
・LunaChatChannelMemberChangedEvent
・LunaChatChannelChatEvent

【備考】
●ColorTeaming でも同様にAPI提供を行い、相互にデータやり取りする仲介プラグインを
用意すれば連携できるようにする。

近いうちに実装したい機能。

LunaChatも、ベースのほうがそろそろ安定しつつあるので、便利になる機能など追加するのも悪くないと思います。


・ ColorMeTeamingとの連携 : 全体チャット、チームチャットを切り替える 位置表示

・ 特定の単語をkick or BAN : サーバー内で不適切な発言をするユーザーをキック あるいはBANします。

・ 宣伝 広告機能 : 広告機能は、Newsと同じで、設定をしたら消すまで一定感覚で表示。
宣伝は、say コマンドのようなもので、打てば一回のみ表示される機能

・プライベートメッセージ機能: 1-1でのチャットですが、わざわざルームを作る必要がないような場合に使う。

プライベートメッセージ機能の追加

1-1でのチャットで、わざわざルームを作る必要がないような場合に使う。
正直、どのように実装するのが良いのか判断が付かないので、十分な仕様検討が必要と思われる。

【検討項目1】
○1:1 チャットの開始を、/tellコマンドを上書きして実装するかどうか。
 Essentialsでも /tellを上書きするため、Essentialsと競合する可能性がある。
○独自に /ch tellコマンドを実装するかどうか。
 /tell を上書きしないのであれば、そのまま /tellを使って会話してしまうユーザーがいそう。

【検討項目2】
1:1 チャットのチャンネル仕様をどうするか。
/tellした側と、された側を、メンバーとする部屋を作成して入室する。
 通常のチャンネルと違うのは、tellされた側が強制的に入室してしまうところにあるが、
 (必要であれば /ch leave すればいいので、)そこまで問題にはならないか。
○tellした側は、デフォルトの発言先を、1:1チャットチャンネルに変更する。
 tellされた側は、デフォルトの発言先は変更されない。

【検討項目3】
チャンネル名をどうするか。
案)「(tellした側の名前)>(tellされた側の名前)」
例) [ucchy>pabook] : はーーい!
※IDが長い人も少なくないので、チャンネル名が長くなりすぎるかもしれない。
※Yamlのキー名として、「>」は使えたかどうか、要調査。

muteコマンドの追加

「ch mute [channel名] (player名)」コマンドを追加する。
仕様はherochatと同等とする。

【仕様の概要】

  • チャンネルモデレータ向けコマンド、一般参加者は実行できない。
  • 指定したプレイヤーの発言権をはく奪する。キックやBANするほどではないが、状況を聞いて反省を促すために発言権のみを取り除きたいときに使う。

【コマンド】

           / mute (name) - 指定した人をチャンネルチャットからMuteします。
           / unmute (name) - 指定した人のMuteを解除します。

kickコマンドやbanコマンドと同様に、チャンネルに入室しており、そのチャンネルのモデレータ(またはサーバーOP)であることが必要。
また、設定 ngwordAction (NGワードを発言したへの自動処分) にも、mask、kick、ban に加えて、mute を追加する。

チャンネル退出のバグ

チャンネル入室(デフォルトで設定したGch)し、
/ch leave G と入力し、退出をしたのですが
退出をしてもチャットを打てば自分は見えなくても他のGチャンネルにいるユーザーは
チャットが見えているようです。
退出したはずのユーザーが、GCHに居続けているのでしょうか・・・?

チャンネル設定ファイルの更新におけるリファクタリング

チャンネル設定ファイルの出力形式変更による、処理高速化の検討

現在の実装では、チャンネル設定を channels.yml にまとめて登録しているが、
チャンネルごとに yml を作成して、個別に読み込み・保存するように変更することで、
チャンネルデータ保存処理の負荷を軽減したい。

【現在の出力形態】 /plugins/LunaChat/channels.yml
【対策後の出力形態】 /plugins/LunaChat/channels/(チャンネル名).yml

また、ChannelsクラスにConfigurationSerializableを継承させ、オブジェクトから直接ymlを出力できるように実装する。

【その他の付随する仕様変更項目】
●ファイル名が「(チャンネル名).yml」になるため、チャンネル名の命名規則を設定して、
 指定できないチャンネル名が指定されたときにエラーになるようにする。
 チャンネル名の命名規則案は、次の通り。
 [0-9a-zA-Z-_]{1,20}
(数字、英小文字、英大文字、ハイフン、アンダーバーの組み合わせで、1文字から20文字まで)
●チャンネル情報ファイルについては、当然ながら、旧バージョンとの互換性がなくなる。
 LunaChat 1.x から 2.0 へ移行するユーザー数が少ないので、手作業での移行を依頼し
 設定以降ツールは提供しない。

サーバーの /reload コマンドを実行するたびに、チャンネルのチャットログファイルが分裂する

サーバーの /reload コマンドを実行するたびに、チャンネルのチャットログファイルが分裂する。

原因としては、onEnableでLoggerのストリームを開くが、onDisableでLoggerのストリームを閉じていないことだと推測される。

(ロックファイルが生成されてしまうのも、ログファイルがライトロックされることも、あまり仕様として良いとは思えないし、)
Java標準のLoggerをやめて、自力でLoggerを実装した方がいいのかも知れない。

コマンド引数の整理

コマンドの引数が整理されていないので、下記のように修正する。

/ch leave (channel)

/ch leave [channel] - channel は省略可能とし、省略時はデフォルト発言先のチャンネルを退出対象にする。

/ch invite (channel) (player)

/ch invite (player) - デフォルト発言先のチャンネルを招待対象にする。
    invite を使う際は、/ch join (channel) で、招待をしたいチャンネルへ移動すること。

個人チャット時のリスト表示

個人チャットがリストに表示されると他のチャンネルに混ざって表示されたりして
見づらくなってしまう。
また、表示されない場合のデメリットが少ないと思うので、リスト表示はなしにしたいと思います。

/ch list コマンドを実行したときのリストで、参加していないチャンネルをグレーで表示する

現在のリストでは、
デフォルトの発言先が赤、
それ以外が白
になっているが、自分が参加していないチャンネルの見分けが付かない。
そこで、
・デフォルトの発言先が赤、
・デフォルト以外の参加しているチャンネルが白、
・参加していないチャンネルを灰色
で表示するように変更する。

ブロードキャストチャンネルの追加 (ワールドチャット、範囲チャットの追加)

【概要】
ブロードキャストチャンネルを追加する。
ブロードキャストチャンネルは、特に明示的に参加をしなくても自動で参加し、発言も全てのサーバー参加者へ配信される。
従来のグローバルチャンネルと、完全に同様であるが、ブロードキャストチャンネルとして仕様を分離することで、ブロードキャストチャンネルを複数もつことができる。
(現行の仕様では、ブロードキャストすることができるチャンネルは、唯一グローバルチャンネルのみであるため、汎用性に欠ける)

【詳細仕様】
プラグイン起動時、グローバルチャンネルに指定されているチャンネルは、(設定に明記されていなくても、)自動的にブロードキャストチャンネルに変更される。
下記のoptionコマンドで、既存のチャンネルをブロードキャストチャンネルに変更することができる。
※ゲーム内からのコマンド(該当チャンネルをデフォルト発言先に変更したあと、):
 /ch option broadcast=true
※コンソールからの実行:
 /ch option (channelName) broadcast=true
上記コマンドで、falseを指定した場合、または、/ch option broadcast= でオプション項目を消去した場合、ブロードキャストチャンネルから一般のチャンネルに変更される。
(ただし、グローバルチャンネルの場合は、ブロードキャストチャンネル設定を外すことができない)

【その他の追加仕様:option range=】
上記とあわせて、チャンネルの可聴範囲を指定することができるオプションrangeを追加する。
※可聴範囲を同ワールドにする
 /ch option range=world
 この設定がされている場合、
 worldで発言したプレイヤーのチャットはworldに居るプレイヤーにしか、
 world_netherで発言したプレイヤーのチャットはworld_netherにいるプレイヤーにしか、
 届かないようになる。
※可聴範囲を距離指定する
 /ch option range=300
 この設定がされている場合、同ワールドにいるプレイヤーにしか届かないことはもちろん、
 受信する相手プレイヤーが指定の距離より近い場合にしか、届かないようになる。
 上の例で言うと、距離 300 の範囲にいるプレイヤーしか、発言を受信しない。
※range=world および range=(number) いずれの場合も、
 “誰にもチャットが届かなかった”場合は、下記のメッセージを表示する。
  [G] あなたの発言は、誰にも届きませんでした。

【使用例】
※ワールドチャットを追加する。

  1. チャンネル作成して入室
     /ch create WorldChat → /ch join WorldChat (または単に、/ch join WorldChat)
  2. チャンネルをブロードキャストチャンネルに設定する /ch option broadcast=true
  3. 可聴範囲をワールドに限定する /ch option range=world

※範囲チャットを追加する。

  1. チャンネル作成して入室
     /ch create RangeChat → /ch join RangeChat (または単に、/ch join RangeChat)
  2. チャンネルをブロードキャストチャンネルに設定する /ch option broadcast=true
  3. 可聴範囲を200マス以内に限定する /ch option range=200

※いずれもブロードキャストチャンネルにしないで、メンバーチャットにすることも可能。
 その場合、手順2番を省略する。
 チャンネルのメンバー、かつ、それぞれの条件(同じワールド、200マス範囲内)を満たす場合に
 チャットが届くようになる。

カラーコードが使えない

LunaChatの、チャンネルフォーマットではカラーコードは使えますが、

サーバーからチャットを打った場合(プレイヤーからのチャット)
にカラーコードが使えません。

&4こんにちは と打てば赤色で表示されるはずが、
そのままテキストで&4こんにちは と出てしまいます。

チャットで半角カタカタのみ含まれる発言を行った場合は、Japanize変換しないようにしてほしい。

チャットで半角カタカタのみ含まれる発言を行った場合、Japanize変換が必要無いのにJapanize変換が行われてしまい、表示が煩雑になる。

  ハンカクカタカナデシャベルヨ(ハンカクカタカナデシャベルヨ)

できれば、チャットで半角カタカタのみ含まれる発言を行った場合は、Japanize変換しないようにしてほしい。

モデレーターがCHから退出した時の対処。

[G]モデレータ Lunasys さんが退出するので、Lunasys さんが次のモデレーターになりました
というメッセージが表示されてしまう


注意点:
しかし、モデレータが抜けてしまい誰かにモデレーター権が移ってしまった場合、
その新しいモデレーターが悪さをする可能性があるということも十分に考えられます。

/ch info コマンドの追加

/ch info コマンドを追加します。

【仕様】
/ch info - 現在のデフォルト発言先チャンネルの情報を参照します。
/ch info (channel) - 指定したチャンネルの情報を参照します。
  表示するのは、チャンネル名、チャンネル説明文、参加人数、
  メンバー(モデレーターは赤文字、オフラインは灰色文字)。

【補足】
/ch info (channel) については、BANユーザーは実行できない。

チャットフォーマットの単一化

現在、それぞれのチャンネルごとにチャットフォーマットの設定が格納されていますが、
1つにまとめることで、管理を楽になるかと思います。

たとえば、何かしら理由があり、チャットのフォーマットを変更したい場合、
デフォルトのを変更、その次にそれぞれのチャットのフォーマットを変更・・・・という
手間がかかってしまうので、ひとつにまとめることにより、
1つ変更すれば、全部変更 ということができるので、手間が省けてより簡単になると思います。

NGワード機能の追加

NGワード機能を追加する。
不適切な発言を、マスクして見えなくする。
config.yml の設定により、NGワード発言時の挙動を変更できるようにする。
ワードマッチングは正規表現を適用しない、単純な文字列マッチングとする。
(実装が複雑になるし、設定する側も手間になる。この記事の一番下のURLを参考にすると、意外にも、正規表現を使う必要がある場面が少ないことがわかる。)

【マスクの例】
NGワードは、半角の「」アスタリスク で置き換えられる。
 [G]: 俺の
***がバーニング!

【config.yml の設定内容】
ngword - NGワードの設定
ngword: ['ファック', '変態', '童貞']
ngwordAction - NGワードを発言した人に対して実行するアクション
mask = マスクするのみ、kick = マスクしてチャンネルからキックする、ban = マスクしてチャンネルからBANする
ngwordAction: mask

【参考になるかもしれない情報】
ニコ生の運営NGワード一覧:
http://dic.nicovideo.jp/a/%E3%83%8B%E3%82%B3%E3%83%8B%E3%82%B3%E7%94%9F%E6%94%BE%E9%80%81%3A%E9%81%8B%E5%96%B6ng%E3%83%AF%E3%83%BC%E3%83%89%E4%B8%80%E8%A6%A7

LunaChat のライセンスを、GPLv3からLGPLv3へ変更する。

LunaChat のライセンスを、GPLv3からLGPLv3へ変更する。

  • 各ソースコードの頭に書いてあるライセンス情報を全て書き換えする。
  • リポジトリのトップに「LICENSE.txt」を置く。
  • README.md に、ライセンス情報を追記する。

モデレーター権限について

モデレーターが行えること(それ以外のユーザーは不可能)

・チャンネルの削除、フォーマットの変更

・ユーザーのKick、Ban

・チャンネル招待

・ルームパスワードの変更(ほかのIssueで詳細説明します)

pardonコマンドの追加

BANコマンドがあるのはいいんですが、BAN解除コマンドが無かったですね・・・
/ch pardon (name) で、BANを解除するようにする。

チャンネル退出、入室でのチャンネル名について

チャンネルでの入退出で、大文字と小文字を区別するようになっていますが
出来ればそれをせずに、Staff チャンネルの場合でも、 /ch join staff もしくは /ch leave staff
で適用していただきたいです。

名前としてはStaff にもできますし、 staff としてもできるように(ただし、どちらかのみであり、両方登録は不可能)したいです。

チャンネルから退出ができない

先ほど、LunaChat 2.0.0にてチャンネルを作成しましたが、

Leaveができない模様です。

作成したチャンネルは、Staffです。
ここで、 /ch leave Staff と入力しても、
[LC] 指定したチャンネルが見つかりませんと表示されてしまいます。

コンソールの方にはエラーが出ていないです。

japanizeDisplayLineが2で、japanizeTypeがkanaで、globalChannel設定が無いとき、発言内容とJP内容が前後する

japanizeDisplayLineに2が設定されており、japanizeTypeがkanaで、
globalChannel設定が無くて、普通のチャットを発言先として使用している場合、
発言内容とJP内容が前後する。

環境によっては、JPが先になったり、発言内容が先になったりする。

JP行は、GoogleIMEやSocialIMEで、変換が重くなる可能性があるため、
発言内容が必ず先になるように、調整する。

PermissionsExへの直接参照ではなく、Vaultを経由した間接参照に変更する

間にVaultを挟むことで、間接的に prefix、suffix を参照できるようにする。
これにより、Vaultが対応している他のプラグインでも、prefix、suffix を取得して使用することができる。

Vaultが連携を表明しているチャットプラグインは、下記の6つ。
mChat, iChat, bPermissions, PEX, P3, DroxPerms

Vaultはsoftdepend とし、Vaultがロードされていない場合は、単にprefix、suffix を設定しないだけにする。
(Vaultが無くてもロードできるようにする)

モデレーターに関する仕様変更

下記2点の仕様変更を行う。

○ モデレーターがチャンネルから退出したときに、自動で別の人をモデレーターに選出する仕様を、落とします。
そもそも、「モデレーターが必ず存在しなければならない」わけではないので、0人であってもいいはずです。
その場合、管理者が /ch moderator コマンドで、誰かをモデレーターに指名してあげてください。

○ モデレーターは、チャンネルに1人しか設定できませんでしたが、複数人を設定可能にします。
同時に、モデレーター追加削除コマンドの指定方法を変更します。
例1)(現在のデフォルト発言先チャンネルにおける)モデレーターに、ucchy を加える
/ch moderator ucchy
例2)モデレーターに、ucchy、lunasys、pabook を加える
/ch moderator ucchy lunasys pabook
例3)モデレーターから、ucchy を除外する(ucchy はモデレーターから一般参加者になる)。
/ch moderator -ucchy

※モデレーターに追加したい場合は、普通に名前を指定。
 モデレーター権限を剥奪したい場合は、名前の前にマイナス(-)を指定。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.