Commit 5f44249f authored by Timothy du Heaume's avatar Timothy du Heaume

as the linter commands

parent a585cd91
use std::collections::HashMap;
use serde::Deserialize;
use serde_yaml;
use serenity::model::id;
use std::collections::HashMap;
use std::fs;
use serde_yaml;
lazy_static! {
static ref CONFIG_FILE: String = fs::read_to_string("config.yml").unwrap();
......
......@@ -163,11 +163,8 @@ impl EventHandler for Handler {
{
return;
}
match message_type {
MessageType::Motion => {
voting::reaction_remove(ctx, removed_reaction);
}
_ => {}
if message_type == MessageType::Motion {
voting::reaction_remove(ctx, removed_reaction);
}
}
Err(why) => error!("Failed to get react message {:?}", why),
......@@ -245,7 +242,7 @@ fn get_message_type(message: &Message) -> MessageType {
{
return MessageType::RoleReactMessage;
}
if message.embeds.len() <= 0 {
if message.embeds.is_empty() {
// Get first word of message
return match message.content.splitn(2, ' ').next().unwrap() {
"Role" => MessageType::Role,
......@@ -256,9 +253,9 @@ fn get_message_type(message: &Message) -> MessageType {
let title: String = message.embeds[0].title.clone().unwrap();
let words_of_title: Vec<_> = title.splitn(2, ' ').collect();
let first_word_of_title = words_of_title[0];
return match first_word_of_title {
match first_word_of_title {
"Motion" => MessageType::Motion,
"Poll" => MessageType::Poll,
_ => MessageType::Misc,
};
}
}
......@@ -14,13 +14,12 @@ pub fn add_role_by_reaction(ctx: Context, msg: Message, added_reaction: Reaction
.find(|rrm| rrm.message == msg.id)
.and_then(|reaction_mapping| {
let react_as_string = get_string_from_react(added_reaction.emoji);
return reaction_mapping.mapping.get(&react_as_string);
reaction_mapping.mapping.get(&react_as_string)
})
.and_then(|role_id| {
return ctx
.http
ctx.http
.add_member_role(CONFIG.server_id, *msg.author.id.as_u64(), *role_id.as_u64())
.ok();
.ok()
});
}
......@@ -31,13 +30,12 @@ pub fn remove_role_by_reaction(ctx: Context, msg: Message, removed_reaction: Rea
.find(|rrm| rrm.message == msg.id)
.and_then(|reaction_mapping| {
let react_as_string = get_string_from_react(removed_reaction.emoji);
return reaction_mapping.mapping.get(&react_as_string);
reaction_mapping.mapping.get(&react_as_string)
})
.and_then(|role_id| {
return ctx
.http
ctx.http
.remove_member_role(CONFIG.server_id, *msg.author.id.as_u64(), *role_id.as_u64())
.ok();
.ok()
});
}
......@@ -85,7 +83,7 @@ fn get_all_role_reaction_message(
)> {
let guild = ctx.http.get_guild(CONFIG.server_id).unwrap();
let channels = ctx.http.get_channels(*guild.id.as_u64()).unwrap();
return channels
channels
.iter()
.flat_map(|channel| {
let ctxx = ctx.clone();
......@@ -98,5 +96,5 @@ fn get_all_role_reaction_message(
.map(|m| (m, &rrm.mapping))
})
})
.collect();
.collect()
}
......@@ -14,7 +14,7 @@ fn text_encrypt(plaintext: &str) -> String {
let iv: &[u8; 16] = &[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
let encrypted_vec =
encrypt(*CIPHER, &*KEY, Some(iv), plaintext.as_bytes()).expect("encryption failed");
return base64::encode(encrypted_vec.as_slice());
base64::encode(encrypted_vec.as_slice())
}
fn text_decrypt(ciphertext: &str) -> Option<String> {
let iv: &[u8; 16] = &[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
......@@ -31,10 +31,10 @@ fn text_decrypt(ciphertext: &str) -> Option<String> {
} else {
warn!("Unable to decode base64 text");
}
return None;
None
}
pub fn generate_token<'a>(discord_user: &User, username: &str) -> String {
pub fn generate_token(discord_user: &User, username: &str) -> String {
// if username doesn't exist : throw error
let timestamp = Utc::now().to_rfc3339();
let payload = format!(
......@@ -44,7 +44,7 @@ pub fn generate_token<'a>(discord_user: &User, username: &str) -> String {
username
);
info!("Token generated for {}: {}", discord_user.name, &payload);
text_encrypt(&payload).to_string()
text_encrypt(&payload)
}
#[derive(Debug)]
......@@ -86,8 +86,8 @@ pub fn parse_token(discord_user: &User, encrypted_token: &str) -> Result<String,
"... verification successful (token {} seconds old)",
time_delta_seconds
);
return Ok(token_username.to_owned());
Ok(token_username.to_owned())
} else {
return Err(TokenError::TokenInvalid);
Err(TokenError::TokenInvalid)
}
}
......@@ -51,7 +51,7 @@ impl Commands {
);
}
pub fn register(ctx: Context, msg: Message, account_name: &str) {
if account_name.len() <= 0 {
if account_name.is_empty() {
e!(
"Error sending message: {:?}",
msg.channel_id
......
......@@ -2,15 +2,22 @@ use serenity::model::{channel::ReactionType, guild::PartialGuild};
pub fn get_string_from_react(react: ReactionType) -> String {
match react {
ReactionType::Custom {animated: _, id: _, name: Some(name)} => name,
ReactionType::Custom {animated: _, id, name: None} => id.to_string(),
ReactionType::Custom {
name: Some(name), ..
} => name,
ReactionType::Custom { id, name: None, .. } => id.to_string(),
ReactionType::Unicode(name) => name,
_ => format!("Unrecognised reaction type: {:?}", react),
}
}
pub fn get_react_from_string(string: String, guild: PartialGuild) -> ReactionType {
guild.emojis.values().find(|e| e.name == string).map_or_else(
|| ReactionType::from(string), // unicode emoji
|custom_emoji| ReactionType::from(custom_emoji.id))
guild
.emojis
.values()
.find(|e| e.name == string)
.map_or_else(
|| ReactionType::from(string), // unicode emoji
|custom_emoji| ReactionType::from(custom_emoji.id),
)
}
......@@ -22,7 +22,7 @@ pub struct Commands;
impl Commands {
pub fn move_something(ctx: Context, msg: Message, content: &str) {
let motion = content;
if motion.len() > 0 {
if !motion.is_empty() {
create_motion(&ctx, &msg, motion);
return;
}
......@@ -43,7 +43,7 @@ impl Commands {
}
pub fn poll(ctx: Context, msg: Message, content: &str) {
let topic = content;
if topic.len() > 0 {
if !topic.is_empty() {
create_poll(&ctx, &msg, topic);
return;
}
......@@ -83,7 +83,7 @@ fn create_motion(ctx: &Context, msg: &Message, topic: &str) {
if let Err(why) = msg.delete(ctx) {
error!("Error deleting motion prompt: {:?}", why);
}
match msg.channel_id.send_message(&ctx.http, |m| {
let result = msg.channel_id.send_message(&ctx.http, |m| {
m.embed(|embed| {
embed.author(|a| {
a.name(&msg.author.name);
......@@ -114,11 +114,9 @@ fn create_motion(ctx: &Context, msg: &Message, topic: &str) {
CONFIG.disapprove_react.to_string(),
]);
m
}) {
Err(why) => {
error!("Error creating motion: {:?}", why);
}
Ok(_) => {}
});
if let Err(why) = result {
error!("Error creating motion: {:?}", why);
}
}
......@@ -199,10 +197,10 @@ fn get_cached_motion(ctx: &Context, msg: &Message) -> MotionInfo {
};
cached_motions.insert(msg.id, this_motion);
}
return (*cached_motions.get(&msg.id).unwrap()).clone();
(*cached_motions.get(&msg.id).unwrap()).clone()
}
fn set_cached_motion(id: &serenity::model::id::MessageId, motion_info: MotionInfo) {
if let Some(motion) = MOTIONS_CACHE.lock().unwrap().get_mut(id) {
fn set_cached_motion(id: serenity::model::id::MessageId, motion_info: MotionInfo) {
if let Some(motion) = MOTIONS_CACHE.lock().unwrap().get_mut(&id) {
*motion = motion_info;
return;
}
......@@ -302,8 +300,7 @@ fn update_motion(
let last_status_full = old_embed
.fields
.iter()
.filter(|f| f.name == "Status")
.next()
.find(|f| f.name == "Status")
.expect("No previous status")
.clone()
.value;
......@@ -349,11 +346,17 @@ pub fn reaction_add(ctx: Context, add_reaction: channel::Reaction) {
match user.has_role(&ctx, CONFIG.server_id, CONFIG.vote_role) {
Ok(true) => {
// remove vote if already voted
for react in [CONFIG.for_vote.to_string(), CONFIG.against_vote.to_string(), CONFIG.abstain_vote.to_string()]
.iter()
.filter(|r| r != &&react_as_string)
for react in [
CONFIG.for_vote.to_string(),
CONFIG.against_vote.to_string(),
CONFIG.abstain_vote.to_string(),
]
.iter()
.filter(|r| r != &&react_as_string)
{
for a_user in message.reaction_users(&ctx, react.as_str(), None, None).unwrap()
for a_user in message
.reaction_users(&ctx, react.as_str(), None, None)
.unwrap()
{
if a_user.id.0 == user.id.0 {
if let Err(why) = add_reaction.delete(&ctx) {
......@@ -364,8 +367,7 @@ pub fn reaction_add(ctx: Context, add_reaction: channel::Reaction) {
}
}
// remove 'illegal' reacts
if !CONFIG.allowed_reacts().contains(&react_as_string)
{
if !CONFIG.allowed_reacts().contains(&react_as_string) {
if let Err(why) = add_reaction.delete(&ctx) {
error!("Error deleting react: {:?}", why);
};
......@@ -373,19 +375,19 @@ pub fn reaction_add(ctx: Context, add_reaction: channel::Reaction) {
}
// update motion
let mut motion_info = get_cached_motion(&ctx, &message);
if let Some(vote) = motion_info
.votes
.get_mut(&react_as_string)
{
if let Some(vote) = motion_info.votes.get_mut(&react_as_string) {
vote.retain(|u| u.id != user.id);
vote.push(user.clone());
}
set_cached_motion(&message.id, motion_info);
set_cached_motion(message.id, motion_info);
update_motion(&ctx, &mut message, &user, "add", add_reaction);
}
Ok(false) => {
if ![CONFIG.approve_react.to_string(), CONFIG.disapprove_react.to_string()]
.contains(&react_as_string)
if ![
CONFIG.approve_react.to_string(),
CONFIG.disapprove_react.to_string(),
]
.contains(&react_as_string)
{
if let Err(why) = add_reaction.delete(&ctx) {
error!("Error deleting react: {:?}", why);
......@@ -416,7 +418,7 @@ pub fn reaction_remove(ctx: Context, removed_reaction: channel::Reaction) {
{
vote.retain(|u| u.id != user.id);
}
set_cached_motion(&message.id, motion_info);
set_cached_motion(message.id, motion_info);
update_motion(&ctx, &mut message, &user, "remove", removed_reaction);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment