146 lines
3.5 KiB
Markdown
146 lines
3.5 KiB
Markdown
# Elly Discord Bot
|
|
|
|
A modern Discord bot for PikaNetwork guild management, built with TypeScript and Deno.
|
|
|
|
## Features
|
|
|
|
- **PikaNetwork Statistics**: View BedWars and SkyWars stats for any player
|
|
- **Guild Management**: Track guild members, activity reports, and updates
|
|
- **Applications System**: Handle guild member applications with voting
|
|
- **Suggestions System**: Community suggestions with upvote/downvote
|
|
- **Family System**: Marriage, adoption, and relationship tracking
|
|
- **QOTD System**: Question of the Day management
|
|
- **Reminders**: Personal reminder system
|
|
- **Staff Simulator**: Fun PikaNetwork staff simulation game
|
|
- **Channel Filtering**: Media-only channel enforcement
|
|
- **Moderation**: Ban, purge, role management
|
|
|
|
## Requirements
|
|
|
|
- [Deno](https://deno.land/) 1.40+
|
|
- Discord Bot Token
|
|
- Discord Application with slash commands enabled
|
|
|
|
## Installation
|
|
|
|
1. Clone the repository:
|
|
|
|
```bash
|
|
git clone <repository-url>
|
|
cd EllyProject
|
|
```
|
|
|
|
2. Copy and configure the config file:
|
|
|
|
```bash
|
|
cp config.toml.example config.toml
|
|
# Edit config.toml with your settings
|
|
```
|
|
|
|
3. Set up environment variables:
|
|
|
|
```bash
|
|
export DISCORD_TOKEN="your-bot-token"
|
|
```
|
|
|
|
4. Run the bot:
|
|
|
|
```bash
|
|
deno task start
|
|
```
|
|
|
|
## Development
|
|
|
|
```bash
|
|
# Run with watch mode
|
|
deno task dev
|
|
|
|
# Type check
|
|
deno task check
|
|
|
|
# Lint
|
|
deno task lint
|
|
|
|
# Format
|
|
deno task fmt
|
|
```
|
|
|
|
## Configuration
|
|
|
|
All configuration is done through `config.toml`. See the file for available options:
|
|
|
|
- **bot**: Bot name, prefix, status, owners
|
|
- **database**: SQLite database path
|
|
- **api**: PikaNetwork API settings
|
|
- **guild**: Target guild ID and name
|
|
- **channels**: Channel names for various features
|
|
- **roles**: Role names for permissions
|
|
- **features**: Enable/disable features
|
|
- **limits**: Various limits (max days, messages, etc.)
|
|
- **colors**: Embed colors
|
|
- **logging**: Log level and file path
|
|
|
|
## Commands
|
|
|
|
### Statistics
|
|
|
|
- `/bedwars <username> [mode] [interval]` - View BedWars stats
|
|
- `/skywars <username> [mode] [interval]` - View SkyWars stats
|
|
- `/guild <name>` - View guild information
|
|
|
|
### Applications
|
|
|
|
- `/applications accept <user>` - Accept an application
|
|
- `/applications deny <user> <reason>` - Deny an application
|
|
- `/applications blacklist <user>` - Blacklist from applications
|
|
|
|
### Suggestions
|
|
|
|
- `/suggest <title> <description>` - Create a suggestion
|
|
- `/suggestion accept <id>` - Accept a suggestion
|
|
- `/suggestion deny <id> <reason>` - Deny a suggestion
|
|
|
|
### Family
|
|
|
|
- `/marry <user>` - Propose marriage
|
|
- `/divorce` - Divorce your partner
|
|
- `/adopt <user>` - Adopt someone
|
|
- `/relationship [user]` - View relationships
|
|
|
|
### Utility
|
|
|
|
- `/remind <duration> <text>` - Set a reminder
|
|
- `/reminders` - View your reminders
|
|
- `/away <user> <days> <reason>` - Set away status
|
|
|
|
### Moderation
|
|
|
|
- `/purge <amount>` - Delete messages
|
|
- `/ban <user> [reason]` - Ban a user
|
|
- `/role <user> <role> <add|remove>` - Manage roles
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
src/
|
|
├── index.ts # Entry point
|
|
├── client/ # Discord client
|
|
├── config/ # Configuration
|
|
├── api/pika/ # PikaNetwork API client
|
|
├── database/ # Database layer
|
|
├── commands/ # Slash commands
|
|
├── components/ # UI components
|
|
├── events/ # Event handlers
|
|
├── services/ # Business logic
|
|
├── utils/ # Utilities
|
|
└── types/ # TypeScript types
|
|
```
|
|
|
|
## License
|
|
|
|
MIT
|
|
|
|
## Credits
|
|
|
|
Ported from the GEM Discord bot (Python/discord.py) to TypeScript/Discord.js with Deno.
|