Added emoji 8ball
This commit is contained in:
parent
997e97d335
commit
59e33a32a9
10
Cargo.lock
generated
10
Cargo.lock
generated
@ -766,6 +766,15 @@ version = "1.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
|
||||
|
||||
[[package]]
|
||||
name = "emojis"
|
||||
version = "0.6.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9f619a926616ae7149a0d82610b051134a0d6c4ae2962d990c06c847a445c5d9"
|
||||
dependencies = [
|
||||
"phf",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "encoding_rs"
|
||||
version = "0.8.33"
|
||||
@ -874,6 +883,7 @@ dependencies = [
|
||||
"chrono",
|
||||
"chrono-tz",
|
||||
"config",
|
||||
"emojis",
|
||||
"j_db",
|
||||
"json",
|
||||
"log",
|
||||
|
||||
@ -30,6 +30,7 @@ serde_json = "1.0.113"
|
||||
raas_types = { version = "0.0.9", registry = "jojo-dev"}
|
||||
prost = "0.12.6"
|
||||
tonic = "0.11.0"
|
||||
emojis = "0.6.2"
|
||||
|
||||
[dependencies.serenity]
|
||||
version = "0.12.0"
|
||||
|
||||
@ -1,8 +1,9 @@
|
||||
use crate::album_manager::AlbumManager;
|
||||
use crate::error::Error;
|
||||
use crate::migrations::{CURRENT_DB_VERSION, do_migration};
|
||||
use crate::migrations::{do_migration, CURRENT_DB_VERSION};
|
||||
use config::{Config, File};
|
||||
use j_db::database::Database;
|
||||
use j_db::metadata::DBMetadata;
|
||||
use reqwest::Url;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serenity::model::id::ChannelId;
|
||||
@ -11,7 +12,6 @@ use serenity::prelude::TypeMapKey;
|
||||
use std::net::SocketAddr;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::sync::Arc;
|
||||
use j_db::metadata::DBMetadata;
|
||||
use structopt::StructOpt;
|
||||
use tokio::sync::mpsc::{channel, Receiver, Sender};
|
||||
use tokio::sync::Mutex;
|
||||
@ -87,10 +87,11 @@ impl GlobalData {
|
||||
let version = db.version()?;
|
||||
|
||||
if version == 0 {
|
||||
db.insert::<j_db::metadata::DBMetadata>( DBMetadata {
|
||||
db.insert::<j_db::metadata::DBMetadata>(DBMetadata {
|
||||
id: None,
|
||||
version: CURRENT_DB_VERSION,
|
||||
}).unwrap();
|
||||
})
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
do_migration(&db);
|
||||
|
||||
@ -3,6 +3,13 @@ use crate::error::Error;
|
||||
use crate::models::insult_compliment::{RandomResponseTemplate, ResponseType};
|
||||
use crate::models::random::{Random, RandomConfig};
|
||||
use crate::{command, group, GlobalData, BAD_APPLE};
|
||||
use chrono::Utc;
|
||||
use emojis::Group;
|
||||
use raas_types::raas::bot::roll::{roll_response, Roll, RollCmd};
|
||||
use raas_types::raas::resp::response::Resp;
|
||||
use raas_types::raas::service::raas_client::RaasClient;
|
||||
use rand::prelude::SliceRandom;
|
||||
use rand::thread_rng;
|
||||
use reqwest::Client;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serenity::all::{CreateAttachment, CreateMessage};
|
||||
@ -14,13 +21,18 @@ use serenity::model::channel::Message;
|
||||
use serenity::utils::MessageBuilder;
|
||||
use std::collections::HashMap;
|
||||
use std::time::Duration;
|
||||
use chrono::Utc;
|
||||
use raas_types::raas::bot::roll::{Roll, roll_response, RollCmd};
|
||||
use raas_types::raas::resp::response::Resp;
|
||||
use raas_types::raas::service::raas_client::RaasClient;
|
||||
|
||||
#[group]
|
||||
#[commands(dad_joke, roll, real_roll, bad_apple, insult, add_random, list_random)]
|
||||
#[commands(
|
||||
dad_joke,
|
||||
roll,
|
||||
real_roll,
|
||||
bad_apple,
|
||||
insult,
|
||||
add_random,
|
||||
list_random,
|
||||
emoji_8ball
|
||||
)]
|
||||
pub struct Joke;
|
||||
|
||||
#[derive(Clone, Serialize, Deserialize)]
|
||||
@ -267,12 +279,16 @@ async fn real_roll(ctx: &Context, msg: &Message, _args: Args) -> CommandResult {
|
||||
|
||||
let grpc_request = tonic::Request::new(roll_request);
|
||||
|
||||
msg.reply(&ctx.http, "Sent roll request, please hang on!").await?;
|
||||
msg.reply(&ctx.http, "Sent roll request, please hang on!")
|
||||
.await?;
|
||||
let response = client.send_request(grpc_request).await?;
|
||||
|
||||
let raas_response = response.into_inner();
|
||||
|
||||
println!("Got resp: {} @ {}",raas_response.id, raas_response.timestamp);
|
||||
println!(
|
||||
"Got resp: {} @ {}",
|
||||
raas_response.id, raas_response.timestamp
|
||||
);
|
||||
|
||||
match raas_response.resp.unwrap() {
|
||||
Resp::RollResp(roll_resp) => {
|
||||
@ -288,7 +304,14 @@ async fn real_roll(ctx: &Context, msg: &Message, _args: Args) -> CommandResult {
|
||||
}
|
||||
}
|
||||
Resp::Error(err) => {
|
||||
msg.reply(&ctx.http, format!("My real flesh encountered an error. Get Dad to fix it. `{}`", err.msg)).await?;
|
||||
msg.reply(
|
||||
&ctx.http,
|
||||
format!(
|
||||
"My real flesh encountered an error. Get Dad to fix it. `{}`",
|
||||
err.msg
|
||||
),
|
||||
)
|
||||
.await?;
|
||||
}
|
||||
}
|
||||
|
||||
@ -365,3 +388,45 @@ async fn insult(ctx: &Context, msg: &Message, args: Args) -> CommandResult {
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn get_unicode_emojis() -> Vec<String> {
|
||||
let groups = [
|
||||
Group::SmileysAndEmotion,
|
||||
Group::Activities,
|
||||
Group::Objects,
|
||||
Group::AnimalsAndNature,
|
||||
Group::PeopleAndBody,
|
||||
Group::FoodAndDrink,
|
||||
];
|
||||
|
||||
let mut emoji = Vec::new();
|
||||
|
||||
for group in groups {
|
||||
emoji.extend(group.emojis())
|
||||
}
|
||||
|
||||
emoji.iter().map(|e| e.to_string()).collect()
|
||||
}
|
||||
|
||||
#[command]
|
||||
#[aliases("🎱")]
|
||||
async fn emoji_8ball(ctx: &Context, msg: &Message) -> CommandResult {
|
||||
let data = ctx.data.read().await;
|
||||
let global = data.get::<GlobalData>().unwrap();
|
||||
|
||||
let guild_emojis = global.cfg.guild_id.emojis(&ctx.http).await?;
|
||||
let mut emojis: Vec<String> = guild_emojis.iter().map(|e| e.to_string()).collect();
|
||||
|
||||
let mut unicode_emojis = get_unicode_emojis();
|
||||
|
||||
emojis.append(&mut unicode_emojis);
|
||||
|
||||
let emoji_msg: Vec<String> = emojis
|
||||
.choose_multiple(&mut thread_rng(), 3)
|
||||
.cloned()
|
||||
.collect();
|
||||
|
||||
msg.reply(&ctx.http, emoji_msg.join("")).await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@ -342,14 +342,15 @@ async fn use_item(ctx: &Context, msg: &Message, args: Args) -> CommandResult {
|
||||
.await?;
|
||||
}
|
||||
ItemType::TacticalNuke => {
|
||||
let mut users: Vec<User> = global_data.db.filter(|_, _user: &User| {
|
||||
true
|
||||
}
|
||||
)?.collect();
|
||||
let mut users: Vec<User> = global_data.db.filter(|_, _user: &User| true)?.collect();
|
||||
|
||||
for user in &mut users {
|
||||
for item in &mut user.inventory.inventory {
|
||||
if item.item_type == ItemType::KillGun || item.item_type == ItemType::CancelRay || item.item_type == ItemType::CancelInsurance || item.item_type == ItemType::Helmet {
|
||||
if item.item_type == ItemType::KillGun
|
||||
|| item.item_type == ItemType::CancelRay
|
||||
|| item.item_type == ItemType::CancelInsurance
|
||||
|| item.item_type == ItemType::Helmet
|
||||
{
|
||||
item.quantity = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -106,7 +106,7 @@ impl Display for ItemType {
|
||||
ItemType::KillGun => "Kill Gun".to_string(),
|
||||
ItemType::Helmet => "Helmet".to_string(),
|
||||
ItemType::CancelRay => "Cancel Ray".to_string(),
|
||||
ItemType::TacticalNuke => "Tactical Nuke".to_string()
|
||||
ItemType::TacticalNuke => "Tactical Nuke".to_string(),
|
||||
};
|
||||
|
||||
write!(f, "{}", name)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user