mirror of
https://forge.gzod01.fr/werobot/discoWeRo-Bot.git
synced 2024-11-17 10:28:03 +00:00
some changes
This commit is contained in:
parent
62d7684234
commit
b0dad06887
3 changed files with 68 additions and 32 deletions
1
.env
1
.env
|
@ -1,2 +1,3 @@
|
||||||
DISCORD_TOKEN=MTIzMDE2NjI2NTM3NzU5MTM5Ng.GVqsyl.ZvP2Kigd5VgP4eITdGqAGYfDw58YeXJYSJg4-A
|
DISCORD_TOKEN=MTIzMDE2NjI2NTM3NzU5MTM5Ng.GVqsyl.ZvP2Kigd5VgP4eITdGqAGYfDw58YeXJYSJg4-A
|
||||||
MYSQL_PASS=gitpoi27940
|
MYSQL_PASS=gitpoi27940
|
||||||
|
RUST_BACKTRACE=0
|
||||||
|
|
7
disco_wero_bot.code-workspace
Normal file
7
disco_wero_bot.code-workspace
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"path": "."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
56
src/main.rs
56
src/main.rs
|
@ -1,17 +1,33 @@
|
||||||
|
// #![feature(internal_output_capture)]
|
||||||
|
use std::any::Any;
|
||||||
|
use std::sync::Arc;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
|
|
||||||
// use lazy_static::lazy_static;
|
// use lazy_static::lazy_static;
|
||||||
use serenity::all::{ComponentInteractionDataKind, Interaction};
|
use serenity::all::{ComponentInteraction, ComponentInteractionDataKind, CreateInteractionResponse, CreateInteractionResponseMessage, Interaction};
|
||||||
use serenity::{async_trait, json};
|
use serenity::{async_trait, json};
|
||||||
use serenity::model::channel::Message;
|
use serenity::model::channel::Message;
|
||||||
|
use serenity::model::event::Event;
|
||||||
use serenity::prelude::*;
|
use serenity::prelude::*;
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
use serde_json::Map;
|
use serde_json::Map;
|
||||||
// use mysql::prelude::Queryable;
|
// use mysql::prelude::Queryable;
|
||||||
|
|
||||||
|
|
||||||
|
struct LogHandler;
|
||||||
|
|
||||||
|
#[async_trait]
|
||||||
|
impl RawEventHandler for LogHandler{
|
||||||
|
async fn raw_event(&self, _ctx:Context, _ev:Event){
|
||||||
|
//let guild_id = _ev.guild_id.get();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct Handler;
|
struct Handler;
|
||||||
|
|
||||||
// lazy_static! {
|
// lazy_static! {
|
||||||
|
@ -49,9 +65,21 @@ impl EventHandler for Handler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async fn interaction_create(&self, ctx: Context, interaction: Interaction){
|
async fn interaction_create(&self, ctx: Context, interaction: Interaction){
|
||||||
|
|
||||||
if let Interaction::Component(comp) = interaction{
|
if let Interaction::Component(comp) = interaction{
|
||||||
println!("Received component interaction {comp:?}");
|
println!("Received component interaction {comp:?}");
|
||||||
if matches!(comp.data.kind, ComponentInteractionDataKind::Button){
|
if matches!(comp.data.kind, ComponentInteractionDataKind::Button){
|
||||||
|
let interaction_output:String = match (button_interaction_role(comp.clone(), ctx.clone()).await) {
|
||||||
|
Ok(role) => format!("Le rôle <@#{role:?}>",role=role.to_owned()),
|
||||||
|
Err(err) => format!("```\n{err:?}\n```",err=err)
|
||||||
|
};
|
||||||
|
let interaction_response:CreateInteractionResponse = CreateInteractionResponse::Message(CreateInteractionResponseMessage::new().ephemeral(true).content(interaction_output));
|
||||||
|
let _ = comp.create_response(ctx, interaction_response).await;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async fn button_interaction_role (comp:ComponentInteraction, ctx:Context)->Result<String,String> {
|
||||||
let compid = comp.data.custom_id;
|
let compid = comp.data.custom_id;
|
||||||
// let guild_id=comp.guild_id;
|
// let guild_id=comp.guild_id;
|
||||||
// let channel_id=comp.channel_id;
|
// let channel_id=comp.channel_id;
|
||||||
|
@ -67,25 +95,23 @@ impl EventHandler for Handler {
|
||||||
// let r:String = mysql::from_row(row.unwrap());
|
// let r:String = mysql::from_row(row.unwrap());
|
||||||
// role=r;
|
// role=r;
|
||||||
// });
|
// });
|
||||||
let mut json_file = File::open("/home/aurel/gzod_site/discordBots/disco_wero_bot/buttons_roles.json").expect("oh no, file not exist!!!!!!!!");
|
let mut json_file = File::open("/home/aurel/gzod_site/discordBots/disco_wero_bot/buttons_role.json").expect("oh no, file not exist!!!!!!!!");
|
||||||
let mut json_file_content = String::new();
|
let mut json_file_content = String::new();
|
||||||
let _ = json_file.read_to_string(&mut json_file_content).expect("can't read file");
|
let _ = json_file.read_to_string(&mut json_file_content).expect("can't read file");
|
||||||
let json:Map<String,serde_json::Value> =serde_json::from_str(&json_file_content).expect("JSON was not well-formatted");
|
let jsonobj:serde_json::Value =serde_json::from_str(&json_file_content).expect("JSON was not well-formatted");
|
||||||
if json.contains_key("{compid:?}"){
|
if jsonobj[&compid] != serde_json::Value::Null{
|
||||||
role = json["{compid:?}"].to_string();
|
role = jsonobj[&compid].as_str().expect("OHOH").to_string();
|
||||||
}
|
}
|
||||||
if role=="nulled"{
|
if role=="nulled"{
|
||||||
println!("{compid:?} does not exist");
|
panic!("{compid:?} does not exist");
|
||||||
return;
|
|
||||||
}
|
|
||||||
let _= comp.member.unwrap().add_role(ctx,role.parse::<u64>().unwrap()).await.expect("oh no");
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
println!("{compid:?} role is : {role:?}");
|
||||||
|
println!("{}",role.to_owned());
|
||||||
|
if let Err(_err)= comp.member.unwrap().add_role(ctx,(&role).to_owned().parse::<u64>().unwrap()).await {
|
||||||
|
return Err(format!("{_err:?}"));
|
||||||
}
|
}
|
||||||
|
return Ok(role);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
// Login with a bot token from the environment
|
// Login with a bot token from the environment
|
||||||
|
@ -93,7 +119,9 @@ async fn main() {
|
||||||
// Set gateway intents, which decides what events the bot will be notified about
|
// Set gateway intents, which decides what events the bot will be notified about
|
||||||
let intents = GatewayIntents::GUILD_MESSAGES
|
let intents = GatewayIntents::GUILD_MESSAGES
|
||||||
| GatewayIntents::DIRECT_MESSAGES
|
| GatewayIntents::DIRECT_MESSAGES
|
||||||
| GatewayIntents::MESSAGE_CONTENT;
|
| GatewayIntents::MESSAGE_CONTENT
|
||||||
|
| GatewayIntents::GUILDS
|
||||||
|
| GatewayIntents::GUILD_MEMBERS;
|
||||||
|
|
||||||
// Create a new instance of the Client, logging in as a bot.
|
// Create a new instance of the Client, logging in as a bot.
|
||||||
let mut client = Client::builder(&token, intents)
|
let mut client = Client::builder(&token, intents)
|
||||||
|
|
Loading…
Reference in a new issue