他のアドオンとの連携機能
discord-mcbeには、MCBE-IPCを使った他のアドオンとの連携機能があります。 これにより、他のアドオンからdiscord-mcbeを経由してDiscordへメッセージを送信できます。
他のアドオンへのMCBE-IPCの導入方法は配布元の説明に従ってください。
この機能を無効にするには、config.jsonのbot.allow_addon_messagesをfalseにします。無効にしても、導入・接続確認用のpingには応答します。
discord-mcbeが導入されているか確認する
Section titled “discord-mcbeが導入されているか確認する”dmc:pingの応答は、trueなら接続中、falseなら導入済みですが未接続です。20tick以内に応答がなければ、discord-mcbeは導入されていません。この確認は起動時に一度だけ行ってください。
import { system } from '@minecraft/server';import { IPC, PROTO } from 'mcbe-ipc';
export function getDiscordMcbeStatus(): Promise<boolean | undefined> { return Promise.race([ IPC.invoke('dmc:ping', PROTO.Void, undefined, PROTO.Boolean), system.waitTicks(20).then(() => undefined), ]);}import { system } from '@minecraft/server';import { IPC, PROTO } from 'mcbe-ipc';
export function getDiscordMcbeStatus() { return Promise.race([ IPC.invoke('dmc:ping', PROTO.Void, undefined, PROTO.Boolean), system.waitTicks(20).then(() => undefined), ]);}Discordへメッセージを送る
Section titled “Discordへメッセージを送る”dmc:send_messageへ送信元とDiscord Create Message API形式のmessageを含むobjectをJSON文字列として送ると、Discordへメッセージが送信されます。
import { IPC, PROTO } from 'mcbe-ipc';
function sendDiscordMessage(source: string, message: Record<string, unknown>) { IPC.send('dmc:send_message', PROTO.String, JSON.stringify({ source, message }));}
sendDiscordMessage('example-addon', { content: 'このメッセージは別のアドオンから送信しています',});import { IPC, PROTO } from 'mcbe-ipc';
function sendDiscordMessage(source, message) { IPC.send('dmc:send_message', PROTO.String, JSON.stringify({ source, message }));}
sendDiscordMessage('example-addon', { content: 'このメッセージは別のアドオンから送信しています',});sourceには送信元のアドオン名を指定します。messageではembedsなど、JSONで表現できるCreate Message APIのフィールドも利用できます。添付ファイル本体の転送には対応していません。
接続イベントを受け取る
Section titled “接続イベントを受け取る”接続開始時にdmc:connect、切断時にdmc:disconnectが発火します。どちらもデータはありません。
import { IPC, PROTO } from 'mcbe-ipc';
IPC.on('dmc:connect', PROTO.Void, () => { // discord-mcbeへの接続が開始された});
IPC.on('dmc:disconnect', PROTO.Void, () => { // discord-mcbeから切断された});