1use bevy::prelude::*;
7use bevy_discord::DiscordBotPlugin;
8use bevy_discord::config::DiscordBotConfig;
9use bevy_discord::messages::bot::DiscordMessage;
10use bevy_discord::serenity::all::*;
11use serde_json::json;
12
13fn main() {
14 let config = DiscordBotConfig::default()
16 .token("YOUR_BOT_TOKEN_HERE".to_string())
17 .gateway_intents(
18 GatewayIntents::GUILD_MESSAGES
19 | GatewayIntents::MESSAGE_CONTENT
20 | GatewayIntents::GUILDS,
21 );
22
23 App::new()
24 .add_plugins(MinimalPlugins)
25 .add_plugins(bevy::log::LogPlugin {
26 ..Default::default()
27 })
28 .add_plugins(DiscordBotPlugin::new(config))
29 .add_systems(Update, handle_discord_message)
30 .run();
31}
32
33fn handle_discord_message(
34 mut messages: MessageReader<DiscordMessage>,
35 http: Option<Res<bevy_discord::res::DiscordHttpResource>>,
36) {
37 for message in messages.read() {
38 if let Some(http) = &http {
39 if message.new_message.author.bot {
41 continue;
42 }
43
44 let content = &message.new_message.content;
45 let channel_id = message.new_message.channel_id;
46
47 if content == "!ping" {
49 let http = http.client();
50
51 bevy_discord::runtime::tokio_runtime().spawn(async move {
52 let _ = http
53 .send_message(
54 channel_id,
55 vec![],
56 &json!({
57 "content": "Pong! 🏓"
58 }),
59 )
60 .await;
61 });
62 }
63 }
64 }
65}