Compare commits

..

No commits in common. "a8bb9bc8fd7ab7ab7dafb350317e8f5727eca185" and "5becb595dbe184dfefd974f671746d7cc9bfc2dc" have entirely different histories.

4 changed files with 16 additions and 32 deletions

View file

@ -1,3 +1 @@
BOT_TOKEN=YOUR-BOT-TOKEN BOT_TOKEN=YOUR-BOT-TOKEN
MEMBER_ROLE_ID=123
WELCOME_CHANNEL_ID=321

View file

@ -8,6 +8,4 @@ serenity = "0.12"
tokio = { version = "1.21.2", features = ["macros", "rt-multi-thread"] } tokio = { version = "1.21.2", features = ["macros", "rt-multi-thread"] }
tracing = "0.1.23" tracing = "0.1.23"
tracing-subscriber = "0.3" tracing-subscriber = "0.3"
envy = "0.4"
serde = { version = "1.0", features = ["derive"] }
dotenv = "0.15" dotenv = "0.15"

View file

@ -1,8 +1,3 @@
use serde::Deserialize;
#[derive(Deserialize, Debug)]
pub struct Config { pub struct Config {
pub bot_token: String, pub bot_token: String,
pub member_role_id: u64,
pub welcome_channel_id: u64,
} }

View file

@ -1,12 +1,12 @@
mod commands; mod commands;
use dotenv::dotenv; use dotenv::dotenv;
use std::env;
use serenity::async_trait; use serenity::async_trait;
use serenity::builder::{CreateInteractionResponse, CreateInteractionResponseMessage}; use serenity::builder::{CreateInteractionResponse, CreateInteractionResponseMessage};
use serenity::model::application::Interaction; use serenity::model::application::Interaction;
use serenity::model::gateway::Ready; use serenity::model::gateway::Ready;
use serenity::model::guild::Member;
use serenity::model::id::ChannelId;
use serenity::model::channel::Message; use serenity::model::channel::Message;
use serenity::model::user::OnlineStatus; use serenity::model::user::OnlineStatus;
use serenity::gateway::ActivityData; use serenity::gateway::ActivityData;
@ -16,9 +16,7 @@ use tracing::{warn, error, info};
mod config; mod config;
use config::Config; use config::Config;
struct Handler { struct Handler;
config: Config
}
#[async_trait] #[async_trait]
impl EventHandler for Handler { impl EventHandler for Handler {
@ -81,16 +79,6 @@ impl EventHandler for Handler {
); );
} }
async fn guild_member_addition(&self, ctx: Context, new_member: Member) {
if let Err(why) = new_member.add_role(&ctx.http, self.config.member_role_id).await {
error!("Error adding role: {why:?}");
}
let channel = ChannelId::new(self.config.welcome_channel_id);
if let Err(why) = channel.say(ctx.http, format!("Hello, {}!", new_member.user.name)).await {
error!("Error sending message: {why:?}");
}
}
} }
#[tokio::main] #[tokio::main]
@ -99,18 +87,23 @@ async fn main() {
dotenv().ok(); dotenv().ok();
let config = match envy::from_env::<Config>() { let bot_token = env::var("BOT_TOKEN")
Ok(config) => config, .expect("BOT_TOKEN не найден")
Err(error) => panic!("{:#?}", error) .parse()
.expect("Неверный формат BOT_TOKEN");
let config = Config {
bot_token: bot_token,
}; };
let intents = GatewayIntents::GUILD_MESSAGES let intents = GatewayIntents::GUILD_MESSAGES
| GatewayIntents::DIRECT_MESSAGES | GatewayIntents::DIRECT_MESSAGES
| GatewayIntents::MESSAGE_CONTENT | GatewayIntents::MESSAGE_CONTENT;
| GatewayIntents::GUILD_MEMBERS;
let mut client = Client::builder(&config.bot_token, intents) let token = &config.bot_token;
.event_handler(Handler { config }) let mut client = Client::builder(token, intents)
.event_handler(Handler)
.await .await
.expect("Error creating client"); .expect("Error creating client");