Skip to main content

Discord

ShanoneのDiscord連携は、Discord APIのほぼ全域を扱う182個のツールをエージェントに提供します。メッセージ、チャンネル、スレッド、ロール、メンバー、モデレーション、ボイス、予定イベント、サウンドボード、スタンプ、Webhook、サーバー管理が対象です。

はじめに

1

OAuthで接続する

エージェントにDiscord関連の作業を依頼(例: 「#generalにメッセージを投稿して」)するか、Shanoneダッシュボードの連携から事前に接続します。どちらの場合も、サーバー向けにShanoneのDiscordアプリを許可するためのconnect_linkが発行されます。
2

サーバーにアプリを許可・追加する

DiscordのOAuth同意画面で、Shanoneに管理させたいサーバー(ギルド)を選択して承認します。
3

リクエストを再実行する

接続が完了すると、discord_*ツールに対するshanone_execute_tool呼び出しが成功するようになります。
ほとんどの書き込み操作(メッセージ投稿、モデレーション、ロール管理)には、Shanoneのボットがサーバー内で該当する権限を持っている必要があります。動作するはずのツールが権限エラーを返す場合は、Discordのサーバー設定でボットのロール権限を確認してください。

利用可能なツール

ShanoneはDiscord向けに182個のツールを、以下のカテゴリに整理して提供しています。
discord_get_channel_messages, discord_send_message, discord_edit_message, discord_delete_message, discord_get_pinned_messages, discord_pin_message, discord_unpin_message, discord_search_messages, discord_get_message, discord_get_message_reference, discord_bulk_delete_messages, discord_crosspost_message, discord_get_reactions, discord_delete_all_reactions, discord_delete_emoji_reactions, discord_delete_user_reaction, discord_add_reaction, discord_remove_reaction, discord_send_with_buttons, discord_send_with_select_menu, discord_update_message_components, discord_disable_components, discord_get_poll_answer_voters
discord_send_embed, discord_edit_embed, discord_send_rich_embed, discord_create_embed_builder, discord_send_file_with_embed
discord_list_channels, discord_get_channel_info, discord_create_channel, discord_update_channel, discord_delete_channel, discord_clone_channel, discord_set_channel_position, discord_set_channel_parent, discord_get_channel_permissions, discord_edit_channel_permissions, discord_delete_channel_permissions, discord_sync_channel_permissions, discord_set_voice_channel_status, discord_follow_announcement_channel, discord_trigger_typing_indicator, discord_group_dm_add_recipient, discord_group_dm_remove_recipient
discord_create_thread, discord_create_thread_from_message, discord_create_thread_without_message, discord_join_thread, discord_leave_thread, discord_add_thread_member, discord_remove_thread_member, discord_list_thread_members, discord_list_active_threads, discord_list_archived_threads, discord_get_thread_member, discord_list_joined_private_archived_threads, discord_create_forum_post, discord_get_forum_tags, discord_update_forum_post_tags, discord_end_poll
discord_get_member, discord_list_members, discord_search_members, discord_update_member, discord_set_nickname, discord_add_role_to_member, discord_remove_role_from_member, discord_set_member_roles, discord_list_roles, discord_get_role, discord_create_role, discord_update_role, discord_delete_role, discord_set_role_positions, discord_get_guild_role_member_counts, discord_calculate_permissions, discord_check_permission, discord_get_role_members, discord_compare_roles, discord_get_guild_prune_count
discord_list_bans, discord_get_ban, discord_create_ban, discord_remove_ban, discord_bulk_ban, discord_kick_member, discord_timeout_member, discord_remove_timeout, discord_begin_guild_prune, discord_list_automod_rules, discord_get_automod_rule
discord_create_automod_rule, discord_update_automod_rule, discord_delete_automod_rule, discord_get_audit_log, discord_search_audit_log, discord_modify_guild_incident_actions
discord_list_guilds, discord_get_guild_info, discord_get_guild_members, discord_search_guild, discord_get_guild_settings, discord_update_guild_settings, discord_get_guild_preview, discord_get_guild_widget_settings, discord_modify_guild_widget, discord_get_guild_widget, discord_get_guild_widget_image, discord_get_guild_vanity_url, discord_get_guild_template, discord_list_guild_templates, discord_create_guild_template, discord_sync_guild_template, discord_modify_guild_template, discord_delete_guild_template, discord_get_guild_welcome_screen, discord_modify_guild_welcome_screen, discord_get_guild_onboarding, discord_modify_guild_onboarding, discord_get_guild_integrations
discord_list_guild_invites, discord_get_invite, discord_create_invite, discord_delete_invite, discord_list_channel_invites
discord_list_voice_regions, discord_get_current_user_voice_state, discord_get_user_voice_state, discord_modify_current_user_voice_state, discord_modify_user_voice_state, discord_create_stage_instance, discord_get_stage_instance, discord_modify_stage_instance, discord_delete_stage_instance, discord_send_soundboard_sound, discord_list_default_soundboard_sounds, discord_list_guild_soundboard_sounds, discord_get_guild_soundboard_sound, discord_create_guild_soundboard_sound
discord_list_scheduled_events, discord_get_scheduled_event, discord_create_scheduled_event, discord_update_scheduled_event, discord_delete_scheduled_event, discord_list_event_users
discord_list_emojis, discord_get_emoji, discord_create_emoji, discord_update_emoji, discord_delete_emoji, discord_list_stickers, discord_get_sticker, discord_create_sticker, discord_update_sticker, discord_delete_sticker
discord_list_channel_webhooks, discord_list_guild_webhooks, discord_get_webhook, discord_create_webhook, discord_update_webhook, discord_delete_webhook, discord_execute_webhook, discord_execute_webhook_with_embed, discord_edit_webhook_message, discord_delete_webhook_message
discord_get_current_user, discord_get_user, discord_get_current_user_guilds, discord_get_user_connections, discord_modify_current_user, discord_get_current_user_guild_member, discord_leave_guild, discord_create_dm, discord_get_user_application_role_connection, discord_update_user_application_role_connection, discord_get_current_application, discord_edit_current_application, discord_get_application_activity_instance, discord_get_guild_integrations, discord_delete_guild_integration, discord_modify_guild_widget

よくあるユースケース

コミュニティモデレーション

監査ログを確認し、規約違反のメンバーをタイムアウト/バンし、Auto Moderationを設定する

お知らせの自動化

お知らせチャンネルにリッチな埋め込みを投稿し、フォロー中のサーバーにクロスポストする

イベント管理

予定イベントを作成し、参加登録を追跡し、ロールメンションでメンバーに通知する

サポートチケットボット

サポート依頼ごとにスレッドを作成し、解決までライフサイクルを管理する

トラブルシューティング

Discordの権限はロールベースかつ階層的です。Shanoneのボットロールには該当する権限(例: Send Messages、Ban Members)が必要で、モデレーション操作の場合はさらにボットのロールがサーバーのロール一覧で対象のロール/メンバーより上位に位置している必要があります。
Discordのネイティブ検索APIは、ボットが見えるチャンネル内のメッセージのみをインデックス化し、複雑なクエリのサポートも限定的です。網羅的な履歴が必要な場合は、代わりにdiscord_get_channel_messagesをページネーションしてください。
ボイス関連の書き込み操作の多くは、ボットがそのギルドの音声チャンネルに既に接続していることを前提としています。ボイス状態を変更したりサウンドボードを再生する前に、まずdiscord_get_current_user_voice_stateを確認してください。
外部の場所を使うイベント(entity_type: EXTERNAL)にはscheduled_end_timeとentity_metadata.locationの両方が必要です。ボイス/ステージイベントではこれらは不要ですが、有効なchannel_idが必要です。