Discordボットを作成する
Discordボットを作成して接続し、ForwardMsgに設定させて、メッセージの読み取り先や送信先を指定します。
Discordからメッセージをコピーするには、自分のアカウントを使えます。 **元のサーバーにボットを招待する必要はありません。サーバーを所有したり、管理者になったりする必要もありません。**自分のアカウントから、コピーしたいチャンネルにアクセスできれば十分です。アカウントを使う場合はDiscordアカウントを接続するをご覧ください。
Discordボットは、コピーしたテキストや画像、動画、ファイルなどの対応メディアをDiscordサーバーに送信できます。Discordの送信元からはDiscord埋め込みも転送できます。転送オプションでメッセージの種類を選びます。送信先サーバーのアップロード上限は引き続き適用されます。アカウントの代わりにボットを使い、元のメッセージを読み取ることもできます。
- **アカウントで読み取り、ボットで配信する場合:**コピーを受け取るサーバーだけにボットを招待します。
- **ボットでも読み取る場合:**元のサーバーにもボットを招待し、コピーするチャンネルへのアクセス権を付与します。
**コードを書く必要も、ボットをホストする必要もありません。**ForwardMsgがボットを実行します。
Discordでボットを作成する
- Discord Developer Portalを開きます。
- New Applicationを選択します。
Community Forwarderなど、識別しやすい名前を入力します。- Createを選択します。
- アプリケーションの左側メニューでBotを開きます。
Discordでは、ボットの設定をapplicationとして管理します。Botページで名前、画像、ログイントークンを設定します。
ボットトークンをコピーする
ボットトークンはボット用のパスワードです。個人のDiscordアカウントのトークンとは別のものです。
- BotページでTokenを探します。
- Reset Tokenを選んで、コピー可能なトークンを生成します。
- Discordの確認を完了します。
- トークンをコピーし、非公開にしてください。
ショートカット:ForwardMsgにボットを設定させる
下記の手動設定を省略できます。トークンをDiscordボットを追加に貼り付けて追加を選び、続行 → 招待 → 完了の手順を行います。ForwardMsgがボットの対応するインテントとサーバーインストールの既定値を自動設定します。このダイアログから直接招待できます。メッセージ送信のために接続する、またはボットにも読み取りをさせる場合はメッセージ読み取りのために接続するに進みます。その後、Developer Portalを再読み込みすると設定を確認できます。ボットには引き続き受信チャンネルへのアクセスが必要です。
トークンをリセットまたは無効にすると、古い接続は切断されます
ForwardMsgに保存済みのトークンをリセットすると、古い接続ではログインできなくなります。新しいトークンでDiscordボットを追加をもう一度使います。メッセージを読み取る場合は送信元で新しい接続を選び、コピーを送るボットの場合は影響を受けるすべてのルーティング送信先で古いボットを置き換えます。変更を保存し、該当する自動化を再起動してください。古い接続の名前を変更してもトークンは更新されません。
以下の2つのセクションでは、招待する前に設定を確認/変更する場所を説明します。
メッセージ本文を読み取れるようにする
Discordでは、これらのスイッチをintentsと呼びます。ForwardMsgでは、以下の2つを有効にします。ボットがコピーを送信するだけ、メッセージを読み取る、または両方を行う場合の推奨設定です。インテントは、チャンネルで閲覧や投稿を可能にする権限とは別のものです。
- Developer PortalでBotを開きます。
- Privileged Gateway Intentsを探します。
- Server Members IntentとMessage Content Intentをオンにします。
- Discordに保存ボタンが表示された場合は変更を保存します。
| インテント | 動作 | 設定 |
|---|---|---|
| Message Content Intent | ボットがメッセージ本文と内容を受信できるようにします。 | ForwardMsgでボットが読み取り、コピーの送信、または両方を行う場合に有効にします。 |
| Server Members Intent | ボットがサーバーメンバーの情報を受信できるようにします。 | ForwardMsgでボットが読み取り、コピーの送信、または両方を行う場合に有効にします。 |
必要な権限を選ぶ
以下は、ボットを招待するときに既定でリクエストされる権限です。招待リンクを使う前に設定または確認してください。
- Developer PortalでInstallationを開きます。
- Installation ContextsでGuild Installを有効にします。GuildはDiscordでサーバーを指す言葉です。
- Default Install SettingsにあるGuild Install設定を探します。
- サーバーにボットを追加するためのbotスコープを含めます。ForwardMsgの転送でスラッシュコマンドは使いません。コマンドを設定する必要はありません。
- 下記の権限を確認します。ForwardMsgの標準招待リンクでは、以下すべてをリクエストします。
- Portalで求められた場合は保存します。
標準招待に含まれる権限
選択した転送機能をすぐ使えるよう、既定の権限を選択したままにします。下記には任意機能だけに必要な権限もありますが、機能を有効にしないまま選択しておけます。
| 権限 | ボットに許可すること |
|---|---|
| View Channels / View Channel | 読み取りまたは投稿を行うチャンネルの閲覧。 |
| Send Messages | 受信チャンネルにコピーしたテキストを投稿。 |
| Read Message History | 返信の文脈に使うメッセージなど、以前のメッセージを取得。 |
| Attach Files | 画像、動画、その他のファイルをアップロード。 |
| Embed Links | 埋め込みカードとリンクプレビューを送信。 |
| Manage Messages | ほかのユーザーのメッセージを削除。標準のメッセージ管理権限に含まれます。 |
| Pin Messages | メッセージ操作の同期が有効な場合、ピン留めと解除を実行。 |
動作に応じた任意の権限
これらの権限も標準招待に含まれます。対応する機能を使う場合のみ必要です。
| 権限 | ボットに許可すること |
|---|---|
| Manage Webhooks | Webhookを有効にするで元の作成者名とアバターを使う場合、チャンネルWebhookを作成・管理。 |
| Send Messages in Threads | アクセスできるスレッド内にコピーを配信。 |
| Add Reactions | リアクションの同期が有効な場合、リアクションを追加。 |
| Mention Everyone | メッセージ形式で使われた場合、@everyoneや@hereなどのメンションを送信。 |
| Use External Emojis | ほかのサーバーのカスタム絵文字を使用。 |
| Use External Stickers | ほかのサーバーのスタンプを使用。 |
| Send Voice Messages | Discordのボイスメッセージを送信。 |
| Bypass Slowmode | チャンネルのスローモード待機なしで投稿。 |
ボットにAdministratorを付与する必要はありません。インストール後、実際のサーバーとチャンネルで権限を確認してください。Discordの権限リファレンスで各設定を説明しています。
すでにサーバーに参加しているボットの場合、Portalで既定値を変更しても既存のサーバーアクセスは更新されません。DiscordでServer Settings → Rolesを開き、ボットのロールを選択してPermissionsを確認します。特定のチャンネルでは、Edit Channel → Permissionsを開き、ボットのロールまたは個別のエントリを確認します。サーバーロールで許可されていても、カテゴリやチャンネルのルールで拒否される場合があります。
サーバーにボットをインストールする
**メッセージ配信には、コピーを受け取るサーバーにボットを追加してください。**アカウントで元のメッセージを読み取る場合、ボットを元のサーバーに参加させる必要はありません。ボットにも読み取りをさせる場合だけ、元のサーバーに追加します。
ForwardMsgでDiscordボットを追加を行う際、送信先サーバーに追加から招待ページを開きます。受信サーバー、または読み取り用ボットを設定する場合は元のサーバーを選択します。Discordで認証し、ForwardMsgに戻って完了を選択します。すでに正しいサーバーにいる場合は、再招待せずに完了を選べます。
Developer Portalから招待することもできます。
- Developer PortalでInstallationを開きます。
- Install LinkでDiscord Provided Linkを選択します。
- リンクをコピーし、Discordにサインインした状態でブラウザーから開きます。
- Add to serverを選び、対象のサーバーを選択します。
- Authorizeを選択し、Discordの確認を完了します。
- そのサーバーのメンバー一覧にボットが表示されることを確認します。
サーバーの所有者、管理者、またはManage Server権限のある人が招待できます。該当しない場合は、サーバー管理者に招待を依頼してください。自分のアカウントでメッセージをコピーする場合、元のサーバーでこの権限は必要ありません。
Developer Portalのレイアウトが変わった場合は、Discordのインストールガイドをご覧ください。
メッセージ読み取りのために接続する
- メッセージの読み取りにDiscordボットを使う自動化を開き、送信元で追加 Discordボットを選びます。
- ボットトークンを貼り付けて追加を選択します。
- ForwardMsgで表示名をそのまま使うか変更し、続行を選択します。
- まだ参加していない場合は、送信先サーバーに追加から読み取り対象のサーバーに招待し、Discordで認証します。
- ForwardMsgに戻って完了を選択します。
- 送信元でボットが選択されていることを確認します。
- 設定を更新を選択します。
- 開始を選択し、実行中になるまで待ちます。
- 読み取り対象のサーバーとチャンネルを追加します。
送信元は元のメッセージがある場所です。監視したいチャンネルだけを選びます。
メッセージ送信のために接続する
ボットがすでに保存されている場合は、トークンを再入力せず選択し、受信チャンネルを選ぶ手順に進みます。
- エディターの左側の一覧で、送信元チャット/チャンネルをクリックして設定を開きます。
- ルーティングを開きます。
- 送信先を追加を選択します。
- ボットがまだ保存されていない場合は追加 Discordボットを選択します。
- トークンを貼り付けて追加を選択します。
- ForwardMsgで表示名をそのまま使うか変更し、続行を選択します。
- 必要に応じて送信先サーバーに追加から受信サーバーに招待し、Discordで認証します。
- ForwardMsgに戻って完了を選択します。
- ボットと、コピーの受信先チャンネルを選択します。
- 送信先ダイアログを完了します。
- 変更を保存を選択します。
送信先はコピーの受信場所です。ボットが各チャンネルにアクセスできれば、同じボットから複数のチャンネルへ送信できます。
**転送ルート間で同じボットを再利用してください。**ほかのルーティング送信先や自動化で保存済みボットを選べばよく、チャットやルートごとにボットを作り直す必要はありません。各受信サーバーにボットを招待し、該当するチャンネルへのアクセス権を付与します。
自動化経由で新しいテキストメッセージを送って結果を確認します。1つのチャンネルだけ失敗する場合は、そのチャンネルでのボットの権限を確認してください。
ForwardMsgによる自動設定を確認する
Discordボットを追加からトークンを保存すると、ForwardMsgは対応するインテント、Guild Install、メッセージの読み取りと送信に必要なインストールの既定値を設定します。
- Developer Portalに戻り、ページを再読み込みします。
- Bot → Privileged Gateway Intentsを開き、Message ContentとServer Membersを確認します。
- Installationを開き、Guild Installと既定の権限を確認します。
- まだ招待していない場合はボットを招待し、ForwardMsgで受信チャンネルを選択します。
各Portalの項目を手動で変更しなくても、この方法を使えます。設定が更新されていない場合は、上記の手動手順に従ってください。
Portalの既定値とサーバーへのアクセスは別です
自動設定はボットのアプリケーション設定を準備します。サーバーへの招待、認証ロールの付与、チャンネル制限の上書きは行いません。ボットがメッセージを読み書きする実際のサーバーで、引き続きアクセス権が必要です。
ボットは接続するが、メッセージを送信できない
接続済みとは、ForwardMsgがボットとしてログインできたという意味です。すべての受信チャンネルでボットに投稿が許可されているとは限りません。
- サーバーとチャンネルを確認する:受信サーバーにボットがいて、対象チャンネルでチャンネルを見るとメッセージを送信が許可されている必要があります。スレッドではスレッドでメッセージを送信も必要です。
- 認証/ゲートキーパーボットを確認する:
VerifiedやMemberなどのロールを得るまでチャンネルを表示しないサーバーがあります。新しく招待されたボットにロールが自動付与されない場合があります。管理者に適切なロールを付与してもらうか、受信チャンネルでボットを明示的に許可してもらってください。たとえば、#newsに投稿できるのがVerifiedロールのメンバーだけなら、ボットにも同じアクセス権が必要です。 - コンテンツの種類を確認する:アップロードにはファイルを添付、埋め込みにはリンクを埋め込むを許可します。Webhookを有効にする場合はWebhookの管理も許可します。
- **トークンを確認する:**トークンをリセットまたは無効にした場合は、新しいトークンでボットを追加し、使用中の保存済み接続を置き換えます。
アクセスを修正した後、ルーティングで変更を保存を選びます。必要であれば自動化を再起動し、送信元チャットから新しいメッセージを送って送信先に届くことを確認します。プライベートテストチャットも使えます。
追加の確認項目は配信と権限をご覧ください。
作成者名、返信、ピン留め
通常、ボットメッセージはボット自身の名前とプロフィール画像で表示されます。たとえば、MayaからコピーしたメッセージはCommunity Forwarderというボットの投稿になります。メッセージ形式を使って、本文にMayaの名前を含めることはできます。
Discordの投稿自体にMayaの名前とアバターを表示するには、Webhookで配信します。コピーごとに元の作成者の情報を使えるため、すべての投稿が同じボットプロフィールになることはありません。
接続済みボットに次の処理を自動で行わせることもできます。
- 受信チャンネルでWebhookの管理権限を付与します。
- ForwardMsgで、左側の一覧から送信元チャットをクリックして設定を開くか、継承するすべての場所に適用する場合は全体設定をクリックします。
- 詳細 → 作成者名とアバター写真を使用して送信を開きます。
- Webhookを有効にするをオンにします。
- 変更を保存を選び、自動化から新しいメッセージを送り、Discordで名前と画像を確認します。
ボットは配信のためにWebhookを作成/管理します。この設定では、受信チャンネルごとに手動でWebhookを作成する必要はありません。
| 配信方法 | Discordの投稿に表示される名前と画像 | ネイティブ返信とピン留め/解除の同期 |
|---|---|---|
| Discordボット、Webhookはオフ | ボット自身のプロフィール | 該当する権限と同期設定があれば利用可能。 |
| Webhook、Webhookはオン | 元の作成者の名前とアバター | 利用不可。Discord Webhookではネイティブ返信やピン留め/解除はできません。 |
返信やピン留めが必要なルートでは、Webhookを有効にするをオフにします。メッセージ操作の同期と詳細設定をご覧ください。
トークンを非公開にする
ボットトークンはパスワードと同じように扱ってください
チャット、メール、チケット、スクリーンショット、共有コードにトークンを記載しないでください。漏洩した場合はDiscordでトークンをリセットし、新しいトークンでForwardMsgにボットを追加し直します。使用中のすべての場所で古い接続を置き換え、保存して、該当する自動化を再起動してください。