7 releases
new 0.3.1 | Oct 31, 2024 |
---|---|
0.3.0 | Oct 31, 2024 |
0.2.2 | Oct 13, 2024 |
0.2.1 | Aug 13, 2024 |
0.2.0-alpha.1 | Jul 13, 2024 |
#1359 in Web programming
387 downloads per month
76KB
1.5K
SLoC
Bevy Discord Plugin
A very simple, bevy plugin that let you send and receive messages through bevy events.
Installation
Add bevy-discord
as your dependency:
$ cargo add bevy-discord --features full
Quick Start
// examples/basic_bot.rs
use bevy::prelude::*;
use bevy_discord::serenity::all::*;
use bevy_discord::bot::{events::BMessage, DiscordBotConfig, DiscordBotPlugin};
use serde_json::json;
fn main() {
// Configure the bot with necessary intents
let config = DiscordBotConfig::default()
.token("YOUR_BOT_TOKEN_HERE")
.gateway_intents(
GatewayIntents::GUILD_MESSAGES
| GatewayIntents::MESSAGE_CONTENT
| GatewayIntents::GUILDS,
);
App::new()
.add_plugins(MinimalPlugins)
.add_plugins(DiscordBotPlugin::new(config))
.add_systems(Update, handle_messages)
.run();
}
fn handle_messages(
mut messages: EventReader<BMessage>,
http: Res<bevy_discord::http::DiscordHttpResource>,
) {
for message in messages.read() {
// Skip messages from bots (including our own)
if message.new_message.author.bot {
continue;
}
let content = &message.new_message.content;
let channel_id = message.new_message.channel_id;
// Simple ping-pong command
if content == "!ping" {
let http = http.client();
bevy_discord::runtime::tokio_runtime().spawn(async move {
let _ = http
.send_message(
channel_id,
vec![],
&json!({
"content": "Pong! 🏓"
}),
)
.await;
});
}
}
}
Example taken from examples/basic_bot.rs
Examples
The examples/
directory contains several example implementations:
basic_bot.rs
- Simple message handling and responsereactions.rs
- Handling reactions and emoji interactionsslash_commands.rs
- Creating and handling slash commands
To run an example:
$ cargo run --example basic_bot
Note: Remember to replace YOUR_BOT_TOKEN
with your actual Discord bot token.
Features
This crate using powerful cargo features.
Feature | Information |
---|---|
bot (includes http ) |
Discord bot integration for Bevy applications. |
http |
HTTP Client functionality for Discord API interactions. |
webhook (👎 Deprecated Learn Why) |
Uses discord webhooks, using this you can only send messages. |
All features are comes under full
feature.
Limitations
Currently, the following Discord/Serenity features are not supported:
Feature | Module |
---|---|
voice |
bot |
attachments |
webhook |
Versions
This crate aims to track bevy's versions. It also follows the semver standard. Below is a chart which versions of this crate are compatible with which bevy version:
Version | Bevy Version |
---|---|
0.2.x |
0.13.x |
0.3.x |
0.13.x |
Dependencies
~12–24MB
~330K SLoC