switch-bots
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

Switch SDK 🚀

A powerful TypeScript SDK for building bots and applications with Switch

npm version TypeScript License Downloads

📚 Table of Contents

✨ Features

Core Features

  • 🔥 Full TypeScript Support - Complete type definitions for all API methods
  • 🚀 Promise-based API - Modern async/await syntax
  • 🛡️ Type Safety - Catch errors before runtime
  • 📝 Auto-completion - IntelliSense support in VS Code and other IDEs

Platform Features

  • 💬 Rich Messaging - Text, media, buttons, and more
  • 👥 Community Management - Roles, permissions, and moderation
  • 🎮 Game Integration - Leaderboards and scoring
  • 🎨 Sticker Support - Create and manage sticker packs
  • 🔌 WebSocket Support - Real-time updates
  • 🔍 Search Functionality - Search messages, media, and users

📦 Installation

# Using npm
npm install switch-bots

# Using yarn
yarn add switch-bots

# Using pnpm
pnpm add switch-bots

🚀 Quick Start

import Client from 'switch-bots';

// Initialize client
const client = new Client('YOUR_TOKEN');

// Start receiving updates
await client.start();

// Handle commands
client.onCommand("start", async (message) => {
    await message.replyText({
        message: "Welcome! 👋",
        inlineMarkup: new Button()
            .url("Visit Website", "https://switch.pe")
            .callback("Get Started", "start_flow")
    });
});

// Handle messages
client.onMessage(async (message) => {
    if (message.message.includes('hello')) {
        await message.replyText({ 
            message: "Hi there! How can I help?" 
        });
    }
});

💡 Examples

Message Handling

Send Rich Messages

// Send message with buttons
await client.sendMessage({
    message: "Choose an option:",
    channelId: "channel123",
    inlineMarkup: new Button()
        .url("Website", "https://switch.pe")
        .callback("Click Me", "button_clicked")
});

// Send media with caption
await client.sendMedia({
    file: myFile,
    caption: "Check this out!",
    channelId: "channel123"
});

Message Actions

// Edit message
await message.editText({
    message: "Updated content",
    inlineMarkup: new Button().url("New Link", "https://example.com")
});

// Pin message
await message.pin();

// Add reaction
await message.addReaction("👍");

Community Management

Role Management

// Create role
await client.createRole("community123", {
    roleName: "Moderator",
    roleColour: "#FF0000",
    permissions: "MODERATE"
});

// Add member to role
await client.addMemberToRole({
    communityId: "community123",
    roleId: 1,
    memberId: userId
});

Moderation

// Ban user
await client.banUser({
    communityId: "community123",
    userId: "user123"
});

// Restrict user
await client.restrictUser({
    communityId: "community123",
    userId: 123,
    restricted: true,
    restrictedTillTimestamp: someTimestamp
});

📖 API Reference

Client Methods

Event Handlers

🛠️ Advanced Usage

Custom Inline Buttons

const markup = new InlineMarkup()
    .addRow()
        .addButton("Click Me", "button1", "callback")
        .addButton("Visit", "https://switch.pe", "url")
    .addRow()
        .addButton("Share", "share_button", "callback");

Game Integration

// Update leaderboard
await client.createLeaderboard({
    userId: 123,
    score: 1000,
    level: 5,
    communityId: "community123"
});

// Get rankings
const leaderboard = await client.getGlobalLeaderboard();

🤝 Contributing

We welcome contributions! See our Contributing Guide for details.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing)
  5. Open a Pull Request

💬 Support

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


Made with ❤️ by the Switch Team

Package Sidebar

Install

npm i switch-bots

Weekly Downloads

1

Version

1.0.2

License

MIT

Unpacked Size

137 kB

Total Files

84

Last publish

Collaborators

  • newdev0