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]
|
[package]
|
||||||
name = "captchuccino"
|
name = "captchuccino"
|
||||||
version = "1.1.0"
|
version = "1.2.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# 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.
|
`ROLE_ID` : The ID of the Unverified role on your server.
|
||||||
|
|
||||||
|
`BOT_CHANNEL_ID` : The ID of the bot channel for logging messages
|
||||||
|
|
||||||
## Deployment
|
## Deployment
|
||||||
|
|
||||||
> ⚠️ The bot needs to have the SERVER MEMBERS INTENT enabled in the developper dashboard.
|
> ⚠️ 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 DISCORD_TOKEN=<TOKEN> \
|
||||||
-e LANG=<LANG> \
|
-e LANG=<LANG> \
|
||||||
-e GUILD_ID=<GUILD_ID> \
|
-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::channel::{Message};
|
||||||
use serenity::model::gateway::Ready;
|
use serenity::model::gateway::Ready;
|
||||||
use serenity::model::guild::Member;
|
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::model::prelude::Guild;
|
||||||
use serenity::prelude::{EventHandler, GatewayIntents, TypeMapKey};
|
use serenity::prelude::{EventHandler, GatewayIntents, TypeMapKey};
|
||||||
use crate::utils::captcha_builder::build_captcha;
|
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;
|
struct Handler;
|
||||||
|
|
||||||
|
@ -64,8 +64,15 @@ async fn send_captcha(_ctx: &Context, _new_member: Member, msg: &str) {
|
||||||
|
|
||||||
let files = vec![(&file, file_name)];
|
let files = vec![(&file, file_name)];
|
||||||
|
|
||||||
channel.send_files(&_ctx, files, |m| m.content(msg)).await
|
match channel.send_files(&_ctx, files, |m| m.content(msg)).await {
|
||||||
.expect(get_translation("server-cantsendmessage-error").as_str());
|
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())
|
remove_file(file_name_string.as_str())
|
||||||
.expect(get_translation("delete-image-error").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")
|
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]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
let token = env::var("DISCORD_TOKEN").expect(get_env_error_message("DISCORD_TOKEN").as_str());
|
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")
|
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-cantaddrole-error": "Cannot add a role",
|
||||||
"server-cantremoverole-error": "Cannot remove a role",
|
"server-cantremoverole-error": "Cannot remove a role",
|
||||||
"server-cantgetchannel-error": "Cannot get the channel",
|
"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-cantaddrole-error": "Impossible d'ajouter un role",
|
||||||
"server-cantremoverole-error": "Impossible de retirer un role",
|
"server-cantremoverole-error": "Impossible de retirer un role",
|
||||||
"server-cantgetchannel-error": "Impossible de récuperer le salon",
|
"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