From 9e34b1a6a0f26bd1bea2d73edb359688c4f86f68 Mon Sep 17 00:00:00 2001 From: Nilstrieb Date: Tue, 15 Jun 2021 13:42:34 +0200 Subject: [PATCH] sends the message --- src/autorole.rs | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/autorole.rs b/src/autorole.rs index 41f0fff..866233f 100644 --- a/src/autorole.rs +++ b/src/autorole.rs @@ -6,6 +6,7 @@ use serenity::framework::standard::{ use serenity::model::prelude::*; use serenity::prelude::*; use std::collections::HashMap; +use std::str::FromStr; use std::time::Duration; pub struct AutoRoleDataKey; @@ -65,8 +66,20 @@ async fn autorole(ctx: &Context, msg: &Message, mut args: Args) -> CommandResult if let Some(emote) = answer.content.split(' ').next() { println!("should add emote: {} for role {}", emote, role.0); answer.react(http, '☑').await?; - - roles.push((emote.to_string(), role.0)); + match role.to_role_cached(&ctx).await { + Some(role) => match EmojiIdentifier::from_str(emote) { + Ok(emojiIdent) => roles.push((emojiIdent, role)), + Err(_) => { + answer.channel_id.say(http, "Could not find emoji").await?; + } + }, + None => { + answer + .channel_id + .say(http, "Could not find role, try again or use another role") + .await?; + } + } } else { break; } @@ -75,17 +88,29 @@ async fn autorole(ctx: &Context, msg: &Message, mut args: Args) -> CommandResult } } + if roles.len() == 0 { + msg.channel_id.say(http, "No roles were entered.").await?; + return Ok(()); + } + msg.channel_id.say(http, "done").await?; - target_channel + let reaction_message = target_channel .send_message(http, |m| { m.embed(|e| { - e.title(message); - e.field("neutral", "same", false) + e.title(message).fields( + roles + .iter() + .map(|(emote, role)| (&role.name, format!("<:{}:{}>", emote.name, emote.id), true)), + ) }) }) .await?; + for data in roles { + reaction_message.react(http, data.0).await?; + } + let mut data = ctx.data.write().await; let mut auto_roles = data.get_mut::().unwrap();