https://github.com/agustinsrg/ps-bot-lib
Simple library to create bots for Pokemon Showdown
https://github.com/agustinsrg/ps-bot-lib
bot library npm pokemon-showdown pokemon-showdown-bot sockjs typescript websocket
Last synced: about 1 year ago
JSON representation
Simple library to create bots for Pokemon Showdown
- Host: GitHub
- URL: https://github.com/agustinsrg/ps-bot-lib
- Owner: AgustinSRG
- License: mit
- Created: 2023-08-19T09:50:40.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2025-02-15T11:04:19.000Z (over 1 year ago)
- Last Synced: 2025-03-16T14:36:54.629Z (about 1 year ago)
- Topics: bot, library, npm, pokemon-showdown, pokemon-showdown-bot, sockjs, typescript, websocket
- Language: TypeScript
- Homepage: https://agustinsrg.github.io/ps-bot-lib/
- Size: 213 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Pokemon Showdown bot library
[](https://badge.fury.io/js/%40asanrom%2Fps-bot-lib)
[](https://github.com/AgustinSRG/ps-bot-lib/actions/workflows/node.js.yml)
[](https://github.com/AgustinSRG/ps-bot-lib/blob/master/LICENSE)
Simple library to create bots for [Pokemon Showdown](https://github.com/smogon/pokemon-showdown), coded in typescript, for NodeJS.
## Installation
In order to install the library to use for your project, run the following command:
```sh
npm install --save @asanrom/ps-bot-lib
```
## Usage
You can use the library to instantiate Pokemon Showdown bots, controlling their actions and listening for events.
Example code:
```ts
import { PokemonShowdownBot } from "@asanrom/ps-bot-lib";
const bot = new PokemonShowdownBot({
// Configuration
host: "sim3.psim.us",
port: 443,
secure: true,
serverId: "showdown",
});
bot.on("error", err => {
// When an error happens, the bot will emit the 'error' event
// Make sure to handle it, or otherwise the process will exit
console.error(err);
});
bot.on("connecting", () => {
console.log("Bot connecting to the server...");
});
bot.on("connected", () => {
console.log("Bot connected!");
});
bot.on("disconnected", () => {
// If the bot disconnects, it will retry connecting to the server
// after 10s by default, you can change it in the configuration
console.log("Bot disconnected!");
});
bot.on("can-login", () => {
// Listen for this event to be able to log into an account
bot.rename("Example account", "eXampl3Pa5w0rd");
});
bot.on("rename-failure", err => {
// Could not log in (maybe invalid password?)
console.log("Could not log in. Error: " + err.message);
});
bot.on("renamed", nick => {
// This event indicates you bot successfully logged in
console.log("Renamed: " + nick);
// Now you can send commands
bot.sendToGlobal("/join Example Room");
bot.pm("Example User", "Hello!");
});
bot.on("line", (room, line, spl, isInitialMessage) => {
// This event is emitted when the bot receives a message line form the server
// room is the room identifier the line was received from, an empty string means is a global message
// line is the raw line received
// spl is the line splitted by the | character
// isInitialMessage is true if the line was received in the room initializing message, meaning it may be an old message
console.log(`Received message from room: ${room}, line: ${line}`);
});
bot.on("sent", msg => {
// This event is emitted when the bot sends a message to the server
console.log("Sent message: " + msg);
});
bot.connect();
```
## Documentation
Check the [documentation](./DOCUMENTATION.md) for detailed specifications for configuration, methods and events available.
You can also check the [auto generated documentation](https://agustinsrg.github.io/ps-bot-lib/).
## Building
In order to build this library, you need:
- [NodeJS](https://nodejs.org/en), latest stable version.
Run the following command to install dependencies:
```sh
npm install
```
Run the following command to build the typescript into javascript:
```sh
npm run build
```