v1.2.0 Added Case of user not having DMs Open
This commit is contained in:
parent
5619a27101
commit
9966242b22
6 changed files with 43 additions and 8 deletions
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "captchuccino"
|
||||
version = "1.1.0"
|
||||
version = "1.2.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
|
|
@ -15,6 +15,8 @@ To run this project, you will need to add the following environment variables to
|
|||
|
||||
`ROLE_ID` : The ID of the Unverified role on your server.
|
||||
|
||||
`BOT_CHANNEL_ID` : The ID of the bot channel for logging messages
|
||||
|
||||
## Deployment
|
||||
|
||||
> ⚠️ The bot needs to have the SERVER MEMBERS INTENT enabled in the developper dashboard.
|
||||
|
@ -31,6 +33,7 @@ Launch the docker image with environment variables
|
|||
-e DISCORD_TOKEN=<TOKEN> \
|
||||
-e LANG=<LANG> \
|
||||
-e GUILD_ID=<GUILD_ID> \
|
||||
-e ROLE_ID=<ROLE_ID>
|
||||
-e ROLE_ID=<ROLE_ID> \
|
||||
-e BOT_CHANNEL_ID=<BOT_CHANNEL_ID>
|
||||
```
|
||||
|
||||
|
|
20
src/main.rs
20
src/main.rs
|
@ -12,11 +12,11 @@ use serenity::client::Context;
|
|||
use serenity::model::channel::{Message};
|
||||
use serenity::model::gateway::Ready;
|
||||
use serenity::model::guild::Member;
|
||||
use serenity::model::id::{RoleId, UserId};
|
||||
use serenity::model::id::{ChannelId, RoleId, UserId};
|
||||
use serenity::model::prelude::Guild;
|
||||
use serenity::prelude::{EventHandler, GatewayIntents, TypeMapKey};
|
||||
use crate::utils::captcha_builder::build_captcha;
|
||||
use crate::utils::i18n::{get_translation, get_env_error_message, get_server_message};
|
||||
use crate::utils::i18n::{get_translation, get_env_error_message, get_server_message, get_user_send_error};
|
||||
|
||||
struct Handler;
|
||||
|
||||
|
@ -64,8 +64,15 @@ async fn send_captcha(_ctx: &Context, _new_member: Member, msg: &str) {
|
|||
|
||||
let files = vec![(&file, file_name)];
|
||||
|
||||
channel.send_files(&_ctx, files, |m| m.content(msg)).await
|
||||
.expect(get_translation("server-cantsendmessage-error").as_str());
|
||||
match channel.send_files(&_ctx, files, |m| m.content(msg)).await {
|
||||
Ok(_) => {
|
||||
|
||||
}
|
||||
Err(_) => {
|
||||
ChannelId::from(get_bot_channel_id())
|
||||
.send_message(&_ctx, |m| m.content(get_user_send_error(_new_member.user.id.0).as_str()))
|
||||
.await.expect(get_translation("server-cantsendmessage-error").as_str());}
|
||||
}
|
||||
|
||||
remove_file(file_name_string.as_str())
|
||||
.expect(get_translation("delete-image-error").as_str());
|
||||
|
@ -158,6 +165,11 @@ fn get_guild_id() -> u64 {
|
|||
guild_id.parse::<u64>().expect("Cannot parse GUILD_ID to int")
|
||||
}
|
||||
|
||||
fn get_bot_channel_id() -> u64 {
|
||||
let channel_id = env::var("BOT_CHANNEL_ID").expect(get_env_error_message("GUILD_ID").as_str());
|
||||
channel_id.parse::<u64>().expect("Cannot parse BOT_CHANNEL")
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
let token = env::var("DISCORD_TOKEN").expect(get_env_error_message("DISCORD_TOKEN").as_str());
|
||||
|
|
|
@ -36,3 +36,21 @@ pub fn get_env_error_message(env_name: &str) -> String {
|
|||
false => panic!("Cannot find env-error")
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_user_send_error(user_id: u64) -> String {
|
||||
let config: I18nConfig = I18nConfig{
|
||||
locales: &["en", "fr"],
|
||||
directory: "translations"
|
||||
};
|
||||
|
||||
let mut r_i18n = I18n::configure(&config);
|
||||
let locale = env::var("LANG")
|
||||
.expect("LANG ENV NOT SET");
|
||||
|
||||
r_i18n.set_current_lang(locale.as_str());
|
||||
let error_msg = r_i18n.t("server-userhasclosedDM-error");
|
||||
match error_msg.to_string().contains("USERID") {
|
||||
true => {error_msg.to_string().replace("USERID", format!("{}", user_id).as_str())}
|
||||
false => panic!("Cannot find env-error")
|
||||
}
|
||||
}
|
|
@ -28,5 +28,6 @@
|
|||
"server-cantaddrole-error": "Cannot add a role",
|
||||
"server-cantremoverole-error": "Cannot remove a role",
|
||||
"server-cantgetchannel-error": "Cannot get the channel",
|
||||
"server-cantsendmessage-error": "Cannot send a message"
|
||||
"server-cantsendmessage-error": "Cannot send a message",
|
||||
"server-userhasclosedDM-error": "User <@USERID> has closed DM and cannot complete captcha"
|
||||
}
|
|
@ -28,5 +28,6 @@
|
|||
"server-cantaddrole-error": "Impossible d'ajouter un role",
|
||||
"server-cantremoverole-error": "Impossible de retirer un role",
|
||||
"server-cantgetchannel-error": "Impossible de récuperer le salon",
|
||||
"server-cantsendmessage-error": "Impossible d'envoyer un message"
|
||||
"server-cantsendmessage-error": "Impossible d'envoyer un message",
|
||||
"server-userhasclosedDM-error": "L'utilisateur <@USERID> a ses DM fermé et ne pas pas remplir le captcha"
|
||||
}
|
Loading…
Reference in a new issue