- 🔥 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
- 💬 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
# Using npm
npm install switch-bots
# Using yarn
yarn add switch-bots
# Using pnpm
pnpm add switch-bots
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?"
});
}
});
// 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"
});
// 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("👍");
// 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
});
// Ban user
await client.banUser({
communityId: "community123",
userId: "user123"
});
// Restrict user
await client.restrictUser({
communityId: "community123",
userId: 123,
restricted: true,
restrictedTillTimestamp: someTimestamp
});
const markup = new InlineMarkup()
.addRow()
.addButton("Click Me", "button1", "callback")
.addButton("Visit", "https://switch.pe", "url")
.addRow()
.addButton("Share", "share_button", "callback");
// Update leaderboard
await client.createLeaderboard({
userId: 123,
score: 1000,
level: 5,
communityId: "community123"
});
// Get rankings
const leaderboard = await client.getGlobalLeaderboard();
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
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ by the Switch Team