mirror of
https://github.com/kurbezz/discord-bot.git
synced 2026-03-03 21:40:48 +01:00
Init
This commit is contained in:
29
src/config.rs
Normal file
29
src/config.rs
Normal file
@@ -0,0 +1,29 @@
|
||||
use once_cell::sync::Lazy;
|
||||
|
||||
|
||||
fn get_env(env: &'static str) -> String {
|
||||
std::env::var(env).unwrap_or_else(|_| panic!("Cannot get the {} env variable", env))
|
||||
}
|
||||
|
||||
|
||||
pub struct Config {
|
||||
pub discord_bot_token: String,
|
||||
pub discord_channel_id: u64,
|
||||
pub telegram_bot_token: String,
|
||||
pub telgram_channel_id: i128,
|
||||
}
|
||||
|
||||
|
||||
impl Config {
|
||||
pub fn load() -> Config {
|
||||
Config {
|
||||
discord_bot_token: get_env("DISCORD_BOT_TOKEN"),
|
||||
discord_channel_id: get_env("DISCORD_CHANNEL_ID").parse().unwrap(),
|
||||
telegram_bot_token: get_env("TELEGRAM_BOT_TOKEN"),
|
||||
telgram_channel_id: get_env("TELEGRAM_CHANNEL_ID").parse().unwrap(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pub static CONFIG: Lazy<Config> = Lazy::new(Config::load);
|
||||
46
src/main.rs
Normal file
46
src/main.rs
Normal file
@@ -0,0 +1,46 @@
|
||||
use serenity::async_trait;
|
||||
use serenity::model::channel::Message;
|
||||
use serenity::prelude::*;
|
||||
|
||||
pub mod config;
|
||||
|
||||
|
||||
async fn send_to_telegram(msg: &str) {
|
||||
let url = format!(
|
||||
"https://api.telegram.org/bot{}/sendMessage?chat_id={}&text={}",
|
||||
config::CONFIG.telegram_bot_token,
|
||||
config::CONFIG.telgram_channel_id,
|
||||
msg
|
||||
);
|
||||
|
||||
reqwest::get(&url).await.expect("Error sending message to Telegram");
|
||||
}
|
||||
|
||||
|
||||
struct Handler;
|
||||
|
||||
#[async_trait]
|
||||
impl EventHandler for Handler {
|
||||
async fn message(&self, _ctx: Context, msg: Message) {
|
||||
if msg.channel_id != config::CONFIG.discord_channel_id {
|
||||
return;
|
||||
}
|
||||
|
||||
send_to_telegram(&msg.content).await;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
let intents = GatewayIntents::GUILD_MESSAGES
|
||||
| GatewayIntents::DIRECT_MESSAGES
|
||||
| GatewayIntents::MESSAGE_CONTENT;
|
||||
|
||||
let mut client =
|
||||
Client::builder(&config::CONFIG.discord_bot_token, intents).event_handler(Handler).await.expect("Err creating client");
|
||||
|
||||
if let Err(why) = client.start().await {
|
||||
println!("Client error: {why:?}");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user