88 lines
1.7 KiB
Markdown
88 lines
1.7 KiB
Markdown
# Ping Me
|
|
|
|
Minimal Discord reaction-role bot with a guided embed setup wizard.
|
|
|
|
## Features
|
|
|
|
- `/pingme create` step-by-step setup wizard
|
|
- One editable wizard message with Back/Next/Cancel controls
|
|
- Button role menus with optional emoji
|
|
- Reaction role menus with emoji
|
|
- Single-select mode: selecting a new option removes the previous configured role
|
|
- Multi-select mode: users can hold multiple configured roles
|
|
- Persistent Postgres storage
|
|
|
|
## Setup
|
|
|
|
1. Install dependencies:
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
2. Copy environment file:
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
3. Create a Postgres database and fill in:
|
|
|
|
- `DISCORD_TOKEN`
|
|
- `DISCORD_CLIENT_ID`
|
|
- `DATABASE_URL` (for example, `postgres://postgres:postgres@localhost:5432/pingme`)
|
|
- optional `DISCORD_GUILD_ID` for instant dev command registration
|
|
|
|
The bot creates the required Postgres table and indexes on startup.
|
|
|
|
4. If you have existing `data/pingme.json` state, migrate it once:
|
|
|
|
```bash
|
|
npm run migrate:json-to-postgres
|
|
# or choose a file explicitly:
|
|
npm run migrate:json-to-postgres -- ./data/pingme.json
|
|
```
|
|
|
|
5. Register slash commands:
|
|
|
|
```bash
|
|
npm run register
|
|
```
|
|
|
|
6. Start the bot:
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
## Required Bot Permissions
|
|
|
|
Give the bot these permissions in servers where it is used:
|
|
|
|
- Manage Roles
|
|
- Send Messages
|
|
- Embed Links
|
|
- Add Reactions
|
|
- Read Message History
|
|
- Use External Emojis, if using external/custom emoji
|
|
|
|
The bot can only assign roles below its highest role.
|
|
|
|
## Commands
|
|
|
|
```text
|
|
/pingme create
|
|
/pingme list
|
|
/pingme delete message_id:<message id>
|
|
/pingme help
|
|
```
|
|
|
|
## Production
|
|
|
|
Build and run compiled JavaScript:
|
|
|
|
```bash
|
|
npm run build
|
|
npm start
|
|
```
|