auto-reply

Auto-Reply - Complete API Reference

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "auto-reply" with this command: npx skills add alsk1992/cloddsbot/alsk1992-cloddsbot-auto-reply

Auto-Reply - Complete API Reference

Create rules for automatic responses based on patterns, keywords, and conditions.

Chat Commands

List Rules

/autoreply list List all rules /autoreply active Show active rules only /autoreply stats Rule statistics

Create Rules

/autoreply add <pattern> <response> Simple keyword match /autoreply add-regex <regex> <response> Regex pattern /autoreply add-keywords <kw1,kw2> <resp> Keyword rule

Manage Rules

/autoreply enable <id> Enable rule /autoreply disable <id> Disable rule /autoreply remove <id> Remove rule /autoreply edit <id> <new-response> Update response /autoreply get <id> Rule details

Testing

/autoreply test <message> Test which rules match /autoreply simulate <message> Preview response

Advanced

/autoreply cooldown <id> <seconds> Set cooldown /autoreply schedule <id> <start-end> Active hours (e.g. 9-17) /autoreply priority <id> <number> Set priority (higher first) /autoreply channel <id> <channel> Restrict to channel /autoreply clear-cooldowns Clear all cooldowns /autoreply reload Reload rules from disk

TypeScript API Reference

Create Auto-Reply Manager

import { createAutoReplyManager } from 'clodds/auto-reply';

const autoReply = createAutoReplyManager({ // Storage storage: 'sqlite', dbPath: './auto-reply.db',

// Defaults defaultCooldownMs: 0, defaultPriority: 0,

// Limits maxRulesPerUser: 100, maxResponseLength: 2000, });

Add Simple Rule

// Keyword match await autoReply.addRule({ name: 'greeting', pattern: { type: 'keyword', value: 'hello', caseSensitive: false, }, response: 'Hi there! How can I help?', });

Add Regex Rule

// Regex pattern await autoReply.addRule({ name: 'price-query', pattern: { type: 'regex', value: /price\s+(btc|eth|sol)/i, }, response: async (match, ctx) => { const symbol = match[1].toUpperCase(); const price = await getPrice(symbol); return ${symbol} price: $${price}; }, });

Add Conditional Rule

// With conditions await autoReply.addRule({ name: 'trading-hours', pattern: { type: 'keyword', value: 'trade', }, conditions: [ // Only during market hours { type: 'time', start: '09:30', end: '16:00', timezone: 'America/New_York', }, // Only on weekdays { type: 'day', days: ['mon', 'tue', 'wed', 'thu', 'fri'], }, // Only for certain users { type: 'user', userIds: ['user-123', 'user-456'], }, ], response: 'Markets are open! What would you like to trade?', elseResponse: 'Markets are closed. Try again during trading hours.', });

Add Cooldown

// Prevent spam await autoReply.addRule({ name: 'faq', pattern: { type: 'keyword', value: 'faq', }, response: 'Check our FAQ at https://...', cooldown: { perUser: 60000, // 60s per user perChannel: 10000, // 10s per channel global: 5000, // 5s global }, });

Dynamic Responses

// Response with variables await autoReply.addRule({ name: 'welcome', pattern: { type: 'exact', value: '!welcome', }, response: 'Welcome {{user.name}}! You joined {{user.joinDate}}.', variables: { 'user.name': (ctx) => ctx.user.displayName, 'user.joinDate': (ctx) => ctx.user.createdAt.toDateString(), }, });

// Response with API call await autoReply.addRule({ name: 'portfolio', pattern: { type: 'keyword', value: 'portfolio', }, response: async (match, ctx) => { const portfolio = await getPortfolio(ctx.user.id); return Your portfolio: $${portfolio.totalValue.toFixed(2)}; }, });

List Rules

const rules = await autoReply.listRules();

for (const rule of rules) { console.log(${rule.id}: ${rule.name}); console.log( Pattern: ${rule.pattern.value}); console.log( Enabled: ${rule.enabled}); console.log( Triggers: ${rule.triggerCount}); }

Test Rule

// Test which rules would match const matches = await autoReply.test('hello world', { userId: 'user-123', channelId: 'telegram-456', });

for (const match of matches) { console.log(Rule: ${match.rule.name}); console.log(Response: ${match.response}); }

Enable/Disable

await autoReply.enable('rule-id'); await autoReply.disable('rule-id');

Delete Rule

await autoReply.deleteRule('rule-id');

Pattern Types

Type Example Description

keyword

hello

Contains keyword

exact

!help

Exact match only

regex

/price\s+\w+/i

Regular expression

startsWith

!

Starts with prefix

endsWith

?

Ends with suffix

Condition Types

Type Description

time

Active during time window

day

Active on specific days

user

Only for specific users

channel

Only in specific channels

role

Only for users with role

custom

Custom function

Response Variables

Variable Description

{{user.name}}

User display name

{{user.id}}

User ID

{{channel.name}}

Channel name

{{match[0]}}

Full regex match

{{match[1]}}

First capture group

{{date}}

Current date

{{time}}

Current time

Best Practices

  • Use priorities — Important rules first

  • Set cooldowns — Prevent spam

  • Test patterns — Verify before enabling

  • Use conditions — Context-aware responses

  • Monitor triggers — Check rule effectiveness

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

binance-futures

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

trading-futures

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

tts

No summary provided by upstream source.

Repository SourceNeeds Review