diff --git a/src/commands/copy_message.rs b/src/commands/copy_message.rs new file mode 100644 index 0000000..9742f8b --- /dev/null +++ b/src/commands/copy_message.rs @@ -0,0 +1,13 @@ +use serenity::{all::CommandOptionType, builder::*}; + + +pub fn register() -> CreateCommand { + CreateCommand::new("copy_message") + .description("Не вызывать, только для настройки") + .add_option( + CreateCommandOption::new( + CommandOptionType::Integer, "message_id", "ID сообщения" + ) + .required(true) + ) +} diff --git a/src/commands/create_message.rs b/src/commands/create_message.rs deleted file mode 100644 index e9fb7b4..0000000 --- a/src/commands/create_message.rs +++ /dev/null @@ -1,7 +0,0 @@ -use serenity::builder::*; - - -pub fn register() -> CreateCommand { - CreateCommand::new("create_message") - .description("Не вызывать, только для настройки") -} diff --git a/src/commands/mod.rs b/src/commands/mod.rs index 7a77dae..a4b0662 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -1,3 +1,3 @@ pub mod add_game; pub mod delete_game; -pub mod create_message; +pub mod copy_message; diff --git a/src/config.rs b/src/config.rs index 2ddb78b..ca98d42 100644 --- a/src/config.rs +++ b/src/config.rs @@ -11,6 +11,8 @@ pub struct Config { pub discord_guild_id: u64, pub discord_channel_id: u64, pub discord_bot_activity: String, + // pub discord_game_list_channel_id: u64, + // pub discord_game_list_message_id: u64, pub telegram_bot_token: String, pub telegram_channel_id: i128, } @@ -23,6 +25,8 @@ impl Config { discord_guild_id: get_env("DISCORD_GUILD_ID").parse().unwrap(), discord_channel_id: get_env("DISCORD_CHANNEL_ID").parse().unwrap(), discord_bot_activity: get_env("DISCORD_BOT_ACTIVITY"), + // discord_game_list_channel_id: get_env("DISCORD_GAME_LIST_CHANNEL_ID").parse().unwrap(), + // discord_game_list_message_id: get_env("DISCORD_GAME_LIST_MESSAGE_ID").parse().unwrap(), telegram_bot_token: get_env("TELEGRAM_BOT_TOKEN"), telegram_channel_id: get_env("TELEGRAM_CHANNEL_ID").parse().unwrap(), } diff --git a/src/main.rs b/src/main.rs index de30e25..80751b3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -29,22 +29,39 @@ struct Handler; impl EventHandler for Handler { async fn interaction_create(&self, ctx: Context, interaction: Interaction) { if let Interaction::Command(command) = interaction { - println!("Received command interaction: {command:#?}"); + match command.data.name.as_str() { + "create_message" => { + let message_id = command.data.options[0].value.as_str().unwrap().parse::().unwrap(); + let message = command.channel_id.message(&ctx.http, message_id).await.unwrap(); - let content = match command.data.name.as_str() { - "create_message" => Some("#init".to_string()), - _ => Some("not implemented :(".to_string()), + let data = CreateInteractionResponseMessage::new().content(message.content); + let builder = CreateInteractionResponse::Message(data); + if let Err(why) = command.create_response(&ctx.http, builder).await { + println!("Cannot respond to slash command: {why}"); + } + }, + "add_game" => { + // let message = command.channel_id.message(&ctx.http, config::CONFIG.discord_game_list_message_id).await.unwrap(); + + let data = CreateInteractionResponseMessage::new().content("Игра добавлена!").ephemeral(true); + let builder = CreateInteractionResponse::Message(data); + if let Err(why) = command.create_response(&ctx.http, builder).await { + println!("Cannot respond to slash command: {why}"); + } + }, + "delete_game" => { + // let message = command.channel_id.message(&ctx.http, config::CONFIG.discord_game_list_message_id).await.unwrap(); + + let data = CreateInteractionResponseMessage::new().content("Игра удалена!").ephemeral(true); + let builder = CreateInteractionResponse::Message(data); + if let Err(why) = command.create_response(&ctx.http, builder).await { + println!("Cannot respond to slash command: {why}"); + } + }, + _ => (), }; - - if let Some(content) = content { - let data = CreateInteractionResponseMessage::new().content(content); - let builder = CreateInteractionResponse::Message(data); - if let Err(why) = command.create_response(&ctx.http, builder).await { - println!("Cannot respond to slash command: {why}"); - } - } } else if let Interaction::Autocomplete(interaction) = interaction { - // println!("Received autocomplete interaction: {interaction:#?}"); + println!("Received autocomplete interaction: {interaction:#?}"); // let content = match interaction.data.name.as_str() { // "game" => { @@ -96,7 +113,7 @@ impl EventHandler for Handler { vec![ commands::add_game::register(), commands::delete_game::register(), - commands::create_message::register() + commands::copy_message::register(), ] ).await.unwrap(); }