コンテンツにスキップ

他のアドオンとの連携機能

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),
]);
}

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: 'このメッセージは別のアドオンから送信しています',
});

sourceには送信元のアドオン名を指定します。messageではembedsなど、JSONで表現できるCreate Message APIのフィールドも利用できます。添付ファイル本体の転送には対応していません。

接続開始時に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から切断された
});