elsa-workflows / elsa-workflows/elsa-extensions
Add Discord Integration
- Dominant language
- C#
- Stars
- 49
- Forks
- 48
- Avg merge
- 21h 35m
- Merged PRs (30d)
- 20
Description
This issue tracks the implementation of an integration for **Discord** in Elsa Workflows. The module should allow workflows to interact with Discord, supporting guild management, messaging, channels, webhooks, and event monitoring.
## **Tasks**
- [ ] Create a new module: `Elsa.Integrations.Discord`
- [ ] Implement **Workflow Activities**:
- [ ] **AddRoleToGuildMember** - Adds a role to a guild member.
- [ ] **CreateChannelInvite** - Creates a new invite for the channel (requires appropriate permissions).
- [ ] **CreateChannelThread** - Creates a new thread in a channel.
- [ ] **CreateGuildChannel** - Creates a new channel in the guild.
- [ ] **CreateGuildEvent** - Creates a new guild event.
- [ ] **CreateWebhookBot** - Creates a new webhook bot.
- [ ] **DeleteChannel** - Deletes a channel.
- [ ] **DeleteGuildEvent** - Deletes a guild event.
- [ ] **DeleteMessage** - Deletes a message.
- [ ] **DeleteWebhookBot** - Deletes a webhook bot permanently.
- [ ] **EditMessage** - Edits a specified message.
- [ ] **GetGuildEvent** - Retrieves details of a specified guild event.
- [ ] **GetMessage** - Retrieves details of a specific message in a channel.
- [ ] **ListChannelInvites** - Retrieves a list of invites (with metadata) for the channel.
- [ ] **ListChannelMessages** - Retrieves a list of messages in a channel.
- [ ] **ListChannels** - Retrieves a list of the bot’s channels.
- [ ] **ListGuildEvents** - Retrieves a list of scheduled events for a guild.
- [ ] **ListGuildMembers** - Retrieves a list of members in the bot’s guild.
- [ ] **ListGuildMembersWithReactionsOnMessage** - Retrieves a list of guild members who reacted to a message with an emoji.
- [ ] **MakeAPICall** - Performs an arbitrary authorized API call to manage Discord data.
- [ ] **PostReactionWithEmoji** - Posts a reaction to a message using an emoji.
- [ ] **RemoveRoleFromGuildMember** - Removes a role from a guild member.
- [ ] **SearchGuildMembers** - Searches for guild members.
- [ ] **SendMessage** - Sends a message to a specified channel, thread, or guild member.
- [ ] **SendMessageByWebhookBot** - Sends a new message using a (custom) webhook bot.
- [ ] **UpdateChannel** - Updates an existing channel.
- [ ] **UpdateCurrentBot** - Updates the current and connected bot user.
- [ ] **UpdateGuildEvent** - Updates an existing guild event.
- [ ] **UpdateGuildMember** - Updates an existing guild member.
- [ ] **WatchChannelInvites** - Triggers when a new channel invite is created.
- [ ] **WatchChannelMessages** - Triggers when a new message is posted to the channel.
- [ ] **WatchGuildMembers** - Triggers when a new member joins the bot’s guild.
- [ ] Add Unit Tests
- [ ] Add Documentation (`README.md`)
## **References**
- 📖 [Discord API Docs](https://discord.com/developers/docs/intro)
- 🛠️ [Discord.NET SDK](https://www.nuget.org/packages/Discord.Net/)
## **Notes**
- This integration should follow the standard Elsa Workflows structure.
- The integration should support authentication via **Bot Token** or **OAuth 2.0**.
- Implement proper permission handling for actions requiring elevated privileges (e.g., managing roles, deleting messages).
- Webhook-based monitoring should be optimized for real-time event tracking.
## **Contributor Guidelines**
If you're interested in working on this issue:
1. Comment below to claim it.
2. Follow the [CONTRIBUTING.md](https://github.com/elsa-workflows/elsa-integrations/blob/main/CONTRIBUTING.md) guide.
3. Submit a PR referencing this issue.
Contributor guide
Assessment
This issue has not been assessed yet.