概要
スーパーグローバルチャットに参加するBOT間で、チャットに投稿されたメッセージをやり取りするために使用します。
メッセージを受信したBOTは、#super-global-chat
チャンネルにJSON形式でメッセージを送信します。
機能
JSONの先頭に"type"
キーを使用し、これから送信するJSONがどの機能に該当するかを示します。
機能は以下の通りです。
Values of "type" key
Value | Requirement Levels | Description |
---|---|---|
message | Must | 送信されたメッセージ |
delete | Should | 削除されたメッセージ |
edit | Should | 編集されたメッセージ |
empty | May | 空(送信テスト) |
(xx-example) | May | 独自規格 |
message
Key | Requirement Levels | Type | Description |
---|---|---|---|
type | Must | string | Valueには"message" が入ります。メッセージが送信されたことを示します。 |
version | Should | string | スーパーグローバルチャットのバージョン どの機能が搭載されているかが分かります。 |
userId | Must | snowflake |
User Object のid が入ります。メッセージの送信者のユーザIDです |
userName | Must | string |
User Object のusername が入ります。メッセージの送信者の名前です global_name ではありません。 |
userDiscriminator | Must | string |
User Object のdiscriminator が入ります。メッセージの送信者のDiscordタグです |
userAvatar | Must | ?string |
author FieldのUser Object のavatar が入ります。メッセージの送信者のAvaterハッシュです。 空の場合は null が入ります。 |
isBot | Should | boolean |
author FieldのUser Object のbot が入ります。メッセージの送信者がOAuth2アプリケーションに属しているかどうかを示します。 |
guildId | Must | snowflake |
Guild Object のid が入ります。メッセージが送信されたサーバーのIDです |
guildName | Must | string |
Guild Object のname が入ります。メッセージが送信されたサーバーのIDです |
guildIcon | Must | ?string |
Guild Object のicon が入ります。メッセージが送信されたサーバーのiconハッシュです。 空の場合は null が入ります。 |
channelId | Should | snowflake |
Channel Object のid が入ります。メッセージが送信されたチャンネルのIDです |
channelName | Should | string |
Channel Object のname が入ります。メッセージが送信されたチャンネルの名前です |
messageId | Should | snowflake |
Message Object のid が入ります。メッセージのIDです |
content | Must | string |
Message Object のcontent が入ります。メッセージの内容です |
reference? | Should | string |
Message Reference Object のmessage_id が入ります。返信先メッセージのIDです |
attachmentsUrl? | Must | array of string |
Attachment のurl の配列が入ります。添付ファイルのURLです。 空の配列は入らず、添付ファイルが0件の場合はこのキーは使用しません |
(xx-example) | May | any | 独自規格 |
例
- 最小パターン
{
"type": "message",
"userId": "607645717623996426",
"userName": "Tsukikoh",
"userDiscriminator": "2710",
"userAvatar": "a118cc1ef21fcbac75764483108888fb",
"isBot": false,
"guildId": "706905953320304772",
"guildName": "Super Global Chat関係",
"guildIcon": "13e9bceb07fec376de1b1af835aca51a",
"channelId": "707158194572623903",
"channelName": "kensaku-sgc",
"messageId": "799141495155195975",
"content": "メッセージ削除の下準備として、検索BOT側で全メッセージに「mID→Message.id」を入れる事にした"
}
- 最大パターン
{
"type": "message",
"version": "2.1.7",
"userId": "607645717623996426",
"userName": "つきこう",
"userDiscriminator": "2710",
"userAvatar": "a118cc1ef21fcbac75764483108888fb",
"isBot": false,
"guildId": "706543524958699570",
"guildName": "Newグローバルチャットサーバー",
"guildIcon": "db2be882afde5818366405376458a774",
"channelId": "707158194572623903",
"channelName": "kensaku-sgc",
"messageId": "773865745187733514",
"content": "Hello World",
"reference": "877075663352389672",
"attachmentsUrl": [ "https://cdn.discordapp.com/attachments/771644708048470046/771652380143517706/video0.mov", "https://cdn.discordapp.com/attachments/771644708048470046/771652381800398868/video1.mov" ]
}
delete
Key | Requirement Levels | Type | Description |
---|---|---|---|
type | Must | string | Valueには"delete" が入ります。メッセージが削除されたことを示します。 |
messageId | Must | snowflake |
Message Object のid が入ります。メッセージのIDです |
version | Should | string | スーパーグローバルチャットのバージョン どの機能が搭載されているかが分かります。 |
userId | May | snowflake |
User Object のid が入ります。メッセージの送信者のユーザIDです |
guildId | May | snowflake |
Guild Object のid が入ります。メッセージが送信されたサーバーのIDです |
channelId | May | snowflake |
Channel Object のid が入ります。メッセージが送信されたチャンネルのIDです |
(xx-example) | May | any | 独自規格 |
content | Should NOT | string |
Message Object のcontent が入ります。メッセージの内容です 削除内容をログとして残すような実装はセキュリティ上の観点で非推奨です。 |
edit
empty
補足
Requirement Levels
- Must : 必須。送信する機能を備えなければならず、これを受信した場合は適切に処理しなければならない。
- Should : 推奨。できる限り搭載しなければならず、これを受信した場合はできる限り適切に処理しなければならない。(ただし、どうしても導入が難しい場合は導入しないことも可能)
- May : 任意。必要に応じてその機能を備えることができる。また、このメッセージが送信されることを考慮し、最低限意図しない不具合を発生させないようにする必要がある。
snowflake
Discordは、IDとしてスノーフレーク形式を利用しています。
JSONで扱う場合、中身はstring型の数字の羅列です。
Version Types
Value | Description |
---|---|
1.0 | 初版。userId userName userDiscriminator userAvatar guildId guildName guildIcon content attachmentsUrl の実装 |
1.1 |
isBot の実装 |
1.2 |
channelId channelName の実装 |
1.3 |
messageId の実装 |
1.4 |
type の実装 type=message 以外を除外(v2.0に即座にアップグレードできないBOT向けに、v2.0以降の新機能との共存対策) |
1.5 |
reference の実装 |
1.6 |
attachmentsUrl のパーセントエンコーディングの廃止 |
1.7 |
userId channelId messageId reference を string型に変更 |
2.0 |
type empty 独自仕様 の実装応答型の独自仕様向けに query を追加 |
2.1 |
edit delete の実装 |
2.1.5 |
reference の実装 |
2.1.6 |
attachmentsUrl のパーセントエンコーディングの廃止 |
2.1.7 |
userId channelId messageId reference を string型に変更 |
2.2 |
auth ban の実装予定 |
2.n.x と 1.x は詳細の仕様変更の部分が一致する
?explanation
指定された型 OR null
?string
: string型か、もしくはnullが入ります。
explanation?
必要なときにのみ使用するキーです。
attachmentsUrl?
: 添付ファイルが存在するときのみ attachmentsUrl
キーを使用します。