📚 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
npm install switch-bots
yarn add switch-bots
pnpm add switch-bots
🚀 Quick Start
import Client from 'switch-bots';
const client = new Client('YOUR_TOKEN');
await client.start();
client.onCommand("start", async (message) => {
await message.replyText({
message: "Welcome! 👋",
inlineMarkup: new Button()
.url("Visit Website", "https://switch.pe")
.callback("Get Started", "start_flow")
});
});
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
await client.sendMessage({
message: "Choose an option:",
channelId: "channel123",
inlineMarkup: new Button()
.url("Website", "https://switch.pe")
.callback("Click Me", "button_clicked")
});
await client.sendMedia({
file: myFile,
caption: "Check this out!",
channelId: "channel123"
});
Message Actions
await message.editText({
message: "Updated content",
inlineMarkup: new Button().url("New Link", "https://example.com")
});
await message.pin();
await message.addReaction("👍");
Role Management
await client.createRole("community123", {
roleName: "Moderator",
roleColour: "#FF0000",
permissions: "MODERATE"
});
await client.addMemberToRole({
communityId: "community123",
roleId: 1,
memberId: userId
});
Moderation
await client.banUser({
communityId: "community123",
userId: "user123"
});
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
await client.createLeaderboard({
userId: 123,
score: 1000,
level: 5,
communityId: "community123"
});
const leaderboard = await client.getGlobalLeaderboard();
🤝 Contributing
We welcome contributions! See our Contributing Guide for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing
) - 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