Narakim Platform Extensions Reference

This document catalogs all platform-specific extensions. The AI assistant should reference this when users ask about platform-specific capabilities.

Agent note: For Discord id semantics (channel vs user, DM vs discord_send_message, interaction followups), the canonical short guide is discord-node-semantics.md, which is always included in the Studio agent system prompt.


Discord Extensions (67 total)

Discord is the most mature platform integration. Requires: Bot Token, Application ID, and optionally a Guild ID.

Discord Triggers (26)

Message Triggers

ExtensionDescriptionKey Output Fields
Message CreateFires when a new message is sentcontent, author (id, username, discriminator, avatar, bot), channelId, guildId, attachments, embeds, mentions
Message UpdateFires when a message is editedcontent, author, channelId, oldContent
Message DeleteFires when a message is deletedmessageId, channelId, guildId
Message Bulk DeleteFires when multiple messages are deleted at oncemessageIds, channelId, guildId
Message Reaction AddFires when a reaction is added to a messageemoji (name, id), userId, channelId, messageId, guildId
Message Reaction RemoveFires when a reaction is removedemoji, userId, channelId, messageId

Interaction Triggers

ExtensionDescriptionKey Output Fields
Slash CommandFires when a user invokes a registered slash commandcommandName, options (array of name/value pairs), user, channelId, guildId, interactionId, interactionToken
Button ClickFires when a user clicks a button componentcustomId, user, channelId, messageId, interactionId, interactionToken
Select MenuFires when a user makes a selection from a select menucustomId, values (array), user, channelId, interactionId, interactionToken
Modal SubmitFires when a user submits a modal formcustomId, fields (array of id/value pairs), user, interactionId, interactionToken
AutocompleteFires when a user types in an autocomplete-enabled command optioncommandName, focusedOption, currentValue, interactionId, interactionToken

Guild & Member Triggers

ExtensionDescriptionKey Output Fields
Guild Member AddFires when a new member joins the serveruser (id, username, avatar, bot), guildId, joinedAt, roles, nickname
Guild Member RemoveFires when a member leaves or is removeduser, guildId
Guild Member UpdateFires when a member's roles, nickname, etc. changeuser, guildId, roles, nickname, oldNickname
Guild CreateFires when the bot joins a new guildguildId, name, memberCount
Guild DeleteFires when the bot is removed from a guildguildId
Guild Ban AddFires when a member is banneduser, guildId, reason
Guild Ban RemoveFires when a ban is lifteduser, guildId
Guild Role CreateFires when a new role is createdrole (id, name, color, permissions), guildId
Guild Role DeleteFires when a role is deletedroleId, guildId
Guild Role UpdateFires when a role is modifiedrole, guildId, oldRole

Channel Triggers

ExtensionDescriptionKey Output Fields
Channel CreateFires when a new channel is createdchannel (id, name, type, parentId), guildId
Channel DeleteFires when a channel is deletedchannelId, guildId
Channel UpdateFires when a channel is modifiedchannel, guildId, oldChannel
Channel Pins UpdateFires when channel pins are updatedchannelId, guildId, lastPinTimestamp

Thread Triggers

ExtensionDescriptionKey Output Fields
Thread CreateFires when a new thread is createdthread (id, name, parentId), guildId
Thread DeleteFires when a thread is deletedthreadId, guildId
Thread UpdateFires when a thread is modifiedthread, guildId

Other Triggers

ExtensionDescriptionKey Output Fields
Voice State UpdateFires when a user joins/leaves/moves voice channelsuserId, channelId, oldChannelId, guildId, selfMute, selfDeaf, serverMute, serverDeaf
Scheduled Event CreateFires when a scheduled event is createdevent (name, description, scheduledStartTime), guildId
Typing StartFires when a user starts typinguserId, channelId, guildId, timestamp

Discord Actions (41)

Message Actions

ExtensionKey Config/InputsDescription
Send MessagechannelId, content, embeds, componentsPost in a guild channel, thread, or forumchannelId MUST be a Discord channel snowflake (not a user id). Using a user id → 404 Unknown Channel.
Send DMuserId, content, embeds, componentsPrivate message to a user; opens/creates the DM channel. Use for per-user welcomes or off-channel notices. Do not use Send Message with the user’s id as channelId.
Edit MessagechannelId, messageId, content, embedsEdit an existing message.
Delete MessagechannelId, messageIdDelete a message.
Get MessagechannelId, messageIdFetch a message's full data.
Add ReactionchannelId, messageId, emojiAdd a reaction emoji to a message.
Remove ReactionchannelId, messageId, emoji, userIdRemove a reaction from a message.
Pin MessagechannelId, messageIdPin a message to the channel.
Unpin MessagechannelId, messageIdUnpin a pinned message.
Use Message TemplatetemplateId, variablesSend a message using a pre-defined template with variable substitution.

Interaction Response Actions

ExtensionKey Config/InputsDescription
Interaction ResponseinteractionId, interactionToken, type, content, embeds, components, ephemeralRespond to a slash command, button, select menu, or modal. Supports ephemeral (private) responses.
Followup MessageinteractionToken, content, embeds, ephemeralSend a follow-up message after an initial interaction response.
Autocomplete ResponseinteractionId, interactionToken, choicesRespond to an autocomplete trigger with a list of choices.

Member Management Actions

ExtensionKey Config/InputsDescription
Add RoleguildId, userId, roleIdAssign a role to a member.
Remove RoleguildId, userId, roleIdRemove a role from a member.
Set NicknameguildId, userId, nicknameChange a member's nickname.
Kick MemberguildId, userId, reasonKick a member from the server.
Ban MemberguildId, userId, reason, deleteMessageDaysBan a member and optionally delete their recent messages.
Unban MemberguildId, userIdRemove a ban from a user.
Timeout MemberguildId, userId, duration (ms, confirm via schema), reasonTemporarily timeout a member. Field names: use get_extension_schema — catalog tables may lag the DB definition.
Remove TimeoutguildId, userIdRemove a timeout from a member.
Move MemberguildId, userId, channelIdMove a member to a different voice channel.
Get UseruserIdFetch a user's profile data.

Channel Management Actions

ExtensionKey Config/InputsDescription
Create ChannelguildId, name, type, parentId, topic, nsfw, bitrate, userLimit, permissionOverwritesCreate a new text, voice, or category channel.
Delete ChannelchannelIdDelete a channel.
Edit ChannelchannelId, name, topic, nsfw, bitrate, userLimitModify channel properties.

Thread Management Actions

ExtensionKey Config/InputsDescription
Create ThreadchannelId, name, autoArchiveDuration, type, messageIdCreate a new thread, optionally from a message.
Archive ThreadthreadIdArchive a thread.
Unarchive ThreadthreadIdUnarchive a thread.
Lock ThreadthreadIdLock a thread (prevent new messages).
Unlock ThreadthreadIdUnlock a thread.

Role Management Actions

ExtensionKey Config/InputsDescription
Create RoleguildId, name, color, hoist, mentionable, permissionsCreate a new role.
Delete RoleguildId, roleIdDelete a role.

Webhook Actions

ExtensionKey Config/InputsDescription
Create WebhookchannelId, name, avatarCreate a new webhook for a channel.
Execute WebhookwebhookId, webhookToken, content, username, avatarUrl, embedsSend a message via webhook (can impersonate any name/avatar).

Other Actions

ExtensionKey Config/InputsDescription
Create InvitechannelId, maxAge, maxUses, temporary, uniqueCreate a server invite link.

Slack Extensions (live)

Slack is a production platform integration. Setup, secrets, and connection steps: platforms/slack.md.

Secrets: SLACK_BOT_TOKEN, SLACK_SIGNING_SECRET

Agent notes:

  • DM vs channel: slack_send_dm uses userId (U…). slack_send_message uses channelId (C… or D…). Do not pass a user id as channelId.
  • DM detection: Slack DM channel ids start with D. Filter with if_condition on {{outputs.<trigger-node-id>.channelId}} startsWith D when using slack_message (see Template strings).
  • Trigger outputs (slack_message): channelId, userId, text, ts, threadTs, teamId

Slack Triggers (extension keys)

Extension keyFires whenKey outputs
slack_messageMessage in channel or DMchannelId, userId, text, ts, threadTs
slack_app_mentionBot @mentionedchannelId, userId, text, ts
slack_slash_commandRegistered slash commandcommand, text, user_id, channel_id, response_url
slack_reaction_addedReaction addedemoji, userId, channelId, message_ts
slack_reaction_removedReaction removedsame as added
slack_member_joinedMember joined workspaceuserId, teamId
slack_member_leftMember leftuserId, teamId
slack_block_actionButton / Block Kit actionaction_id, value, user, channel, response_url
slack_view_submissionModal submittedcallback_id, user, values
slack_shortcutGlobal/message shortcutcallback_id, user, channel
slack_workflow_step_executeWorkflow step executedworkflow payload

Slack Actions (extension keys)

Extension keyRequired configNotes
slack_send_messagechannelId, textGuild channel, thread, or DM channel id
slack_send_dmuserId, textOpens DM with user
slack_send_blockschannelId, blocksBlock Kit JSON
slack_reply_in_threadchannelId, thread_ts, textThread reply
slack_update_messagechannelId, ts, textEdit message
slack_delete_messagechannelId, tsDelete message
slack_ephemeral_messagechannelId, userId, textVisible to one user in channel
slack_respond_to_commandresponse_url, textReply to slash command
slack_add_reactionchannelId, timestamp, nameEmoji name
slack_remove_reactionchannelId, timestamp, name
slack_open_modaltrigger_id, viewModal JSON
slack_update_modalview_id, view
slack_get_channel_infochannelId
slack_get_user_infouserId
slack_get_channel_memberschannelId
slack_set_channel_topicchannelId, topic
slack_upload_filechannels, contentFile upload

Telegram Extensions (live)

Telegram is a production platform integration. Setup and token: platforms/telegram.md.

Secrets: TELEGRAM_BOT_TOKEN

Agent notes:

  • chat.id vs from.id: Reply in the same chat with chat.id from the trigger; use from.id only when targeting the user explicitly.
  • Commands vs messages: telegram_command for /slash commands; telegram_message for free-form text.
  • Callbacks: Always call telegram_answer_callback_query after telegram_callback_query before a slow follow-up.

Telegram Triggers (extension keys)

Extension keyFires whenKey outputs
telegram_messageUser sends a messagetext, from, chat, message_id, date
telegram_command/command receivedcommand, args, from, chat, message_id
telegram_callback_queryInline button presseddata, from, message, callback_query_id
telegram_inline_queryInline mode queryquery, from, inline_query_id
telegram_chat_member_updatedMember status changechat member payload
telegram_message_reactionReaction on messagereaction payload
telegram_chat_join_requestJoin requestrequest payload

Telegram Actions (extension keys)

Extension keyRequired configNotes
telegram_send_messagechatId, textOptional reply_markup for keyboards
telegram_send_photochatId, photoURL or file id
telegram_send_documentchatId, document
telegram_edit_messagechatId, messageId, text
telegram_delete_messagechatId, messageId
telegram_answer_callback_querycallbackQueryIdDismiss button loading state
telegram_send_inline_keyboardchatId, text, keyboardSends message + inline keyboard
telegram_ban_userchatId, userId
telegram_unban_userchatId, userId
telegram_restrict_memberchatId, userId, permissions
telegram_pin_messagechatId, messageId
telegram_unpin_messagechatId, messageId
telegram_get_chat_member_countchatId

Common Discord Automation Patterns

Welcome Bot

Guild Member Add → Send Message (to #welcome channel)

Auto-Moderation Bot

Message Create → If Condition (check for banned words) → [true] Delete Message + Timeout Member + Send Message (warn in #mod-log)

Slash Command Bot

Slash Command (/weather) → HTTP Request (weather API) → Transform Data → Interaction Response (formatted weather)

AI Chat Bot

Message Create (filter: not bot) → OpenRouter AI (with message content) → Send Message (AI response)

Reaction Role Bot

Message Reaction Add → If Condition (check emoji) → [true] Add Role
Message Reaction Remove → If Condition (check emoji) → [true] Remove Role

Ticket System

Button Click (customId: "create-ticket") → Create Channel (private) → Send Message (ticket instructions) → Interaction Response (ephemeral: "Ticket created!")

Scheduled Announcements

Timer Trigger (cron: "0 9 * * *") → HTTP Request (fetch latest content) → Transform Data → Send Message (to #announcements)
Was this helpful?
historyLast updated: May 10, 2026