Reads each new post in your Discord community channel and forwards support questions, bug reports and ideas to the right channel.
Uses
ClaudeDiscord
Send community posts to the right channel
Whenever a new post appears in your main Discord community channel, the AI reads it and decides whether it is a support question, a bug report, a feature idea, ordinary chatter or unclear. Posts that need someone are forwarded to the channel that handles them: support questions to one, bug reports to another, feature ideas to a third.
What arrives in the destination channel carries the original context: the kind of post it is, who posted it, a link straight back to the message and what they said, so whoever picks it up can act at once. Ordinary chatter, and anything too short or ambiguous to call, is left in place rather than filed as something it might not be. Each post goes to at most one channel, posts the workflow routed itself are recognised and ignored, and a destination that is the watched channel is skipped instead of looping.
Before the first run you need a Discord server with a community channel to watch and one channel each for support, bugs and ideas.
communityPost.When a new message is posted in a Discord channel. Save it as communityPost.serverId to blank.Set serverId to blank.supportChannelId to blank.Set supportChannelId to blank.bugChannelId to blank.Set bugChannelId to blank.ideaChannelId to blank.Set ideaChannelId to blank.minimumMessageLength to 15.Set minimumMessageLength to 15.messageText to blank.Set messageText to blank.contentErrorIf a step below fails, save the error as contentErrorcommunityPost.content and save it as messageText.Trim communityPost.content and save it as messageText.messageText to blank.Change messageText to blank.sourceChannelId to blank.Set sourceChannelId to blank.channelErrorIf a step below fails, save the error as channelErrorcommunityPost.channel_id and save it as sourceChannelId.Trim communityPost.channel_id and save it as sourceChannelId.sourceChannelId to blank.Change sourceChannelId to blank.messageId to blank.Set messageId to blank.messageIdErrorIf a step below fails, save the error as messageIdErrorcommunityPost.message_id and save it as messageId.Trim communityPost.message_id and save it as messageId.messageId to blank.Change messageId to blank.authorName to blank.Set authorName to blank.authorErrorIf a step below fails, save the error as authorErrorcommunityPost.author_username and save it as authorName.Trim communityPost.author_username and save it as authorName.authorName to blank.Change authorName to blank.authorName is emptyIf authorName is emptyauthorName to a community member.Change authorName to a community member.routedMarker to Routed here from the community channel.Set routedMarker to Routed here from the community channel.messageText contains routedMarkerIf messageText contains routedMarkermessageText is less than minimumMessageLength multiplied by 1If the length of messageText is less than minimumMessageLength multiplied by 1classifyRules to:Set classifyRules to:You sort one message from a community chat channel into exactly one category.
support - the person is asking for help using the product, or asking a question they expect an answer to
bug - the person is reporting something broken, failing, or behaving wrongly
idea - the person is suggesting a feature, a change, or an improvement
chatter - conversation, greetings, jokes, thanks, opinions, plans, or anything else that needs no action from the team
unclear - you cannot tell which of the other four it is
Most messages in a community channel are chatter. Answer chatter unless the message clearly...classifyPrompt to classifyRulesSet classifyPrompt to classifyRules
Message from authorName:
messageText.classifyPrompt. Save it as classification.Ask Claude: classifyPrompt. Save it as classification.
Maximum response length: 16verdict to unclear.Set verdict to unclear.verdictErrorIf a step below fails, save the error as verdictErrorclassification.response_text lowercase and save it as verdict.Make classification.response_text lowercase and save it as verdict.verdict to unclear.Change verdict to unclear.destinationChannelId to blank.Set destinationChannelId to blank.routeLabel to blank.Set routeLabel to blank.verdict is supportIf verdict is supportdestinationChannelId to supportChannelId.Change destinationChannelId to supportChannelId.routeLabel to support question.Change routeLabel to support question.destinationChannelId to bugChannelId.Change destinationChannelId to bugChannelId.routeLabel to bug report.Change routeLabel to bug report.destinationChannelId to ideaChannelId.Change destinationChannelId to ideaChannelId.routeLabel to feature idea.Change routeLabel to feature idea.destinationChannelId is emptyIf destinationChannelId is emptydestinationChannelId is sourceChannelIdIf destinationChannelId is sourceChannelIdpostLink to (the original post could not be linked).Set postLink to (the original post could not be linked).sourceChannelId isn't empty and messageId isn't emptyIf sourceChannelId isn't empty and messageId isn't emptypostLink to https://discord.com/channels/@serverId/@sourceChannelId/@messageId.Change postLink to https://discord.com/channels/@serverId/@sourceChannelId/@messageId.routedHeader to routedMarker - routeLabel.Set routedHeader to routedMarker - routeLabel.routedFrom to Posted by authorName.Set routedFrom to Posted by authorName.routedLink to Original post: postLink.Set routedLink to Original post: postLink.messageText to 1500 characters and save it as quotedText.Shorten messageText to 1500 characters and save it as quotedText.routedBody to What they said:Set routedBody to What they said:
quotedText.routedTop to routedHeaderSet routedTop to routedHeader
routedFrom
routedLink.routedMessage to routedTopSet routedMessage to routedTop
routedBody.destinationChannelId.Send a message to channel destinationChannelId.routedMessage