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"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
|
checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "emojis"
|
||||||
|
version = "0.6.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9f619a926616ae7149a0d82610b051134a0d6c4ae2962d990c06c847a445c5d9"
|
||||||
|
dependencies = [
|
||||||
|
"phf",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "encoding_rs"
|
name = "encoding_rs"
|
||||||
version = "0.8.33"
|
version = "0.8.33"
|
||||||
@ -874,6 +883,7 @@ dependencies = [
|
|||||||
"chrono",
|
"chrono",
|
||||||
"chrono-tz",
|
"chrono-tz",
|
||||||
"config",
|
"config",
|
||||||
|
"emojis",
|
||||||
"j_db",
|
"j_db",
|
||||||
"json",
|
"json",
|
||||||
"log",
|
"log",
|
||||||
|
|||||||
@ -30,6 +30,7 @@ serde_json = "1.0.113"
|
|||||||
raas_types = { version = "0.0.9", registry = "jojo-dev"}
|
raas_types = { version = "0.0.9", registry = "jojo-dev"}
|
||||||
prost = "0.12.6"
|
prost = "0.12.6"
|
||||||
tonic = "0.11.0"
|
tonic = "0.11.0"
|
||||||
|
emojis = "0.6.2"
|
||||||
|
|
||||||
[dependencies.serenity]
|
[dependencies.serenity]
|
||||||
version = "0.12.0"
|
version = "0.12.0"
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
use crate::album_manager::AlbumManager;
|
use crate::album_manager::AlbumManager;
|
||||||
use crate::error::Error;
|
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 config::{Config, File};
|
||||||
use j_db::database::Database;
|
use j_db::database::Database;
|
||||||
|
use j_db::metadata::DBMetadata;
|
||||||
use reqwest::Url;
|
use reqwest::Url;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serenity::model::id::ChannelId;
|
use serenity::model::id::ChannelId;
|
||||||
@ -11,7 +12,6 @@ use serenity::prelude::TypeMapKey;
|
|||||||
use std::net::SocketAddr;
|
use std::net::SocketAddr;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use j_db::metadata::DBMetadata;
|
|
||||||
use structopt::StructOpt;
|
use structopt::StructOpt;
|
||||||
use tokio::sync::mpsc::{channel, Receiver, Sender};
|
use tokio::sync::mpsc::{channel, Receiver, Sender};
|
||||||
use tokio::sync::Mutex;
|
use tokio::sync::Mutex;
|
||||||
@ -90,7 +90,8 @@ impl GlobalData {
|
|||||||
db.insert::<j_db::metadata::DBMetadata>(DBMetadata {
|
db.insert::<j_db::metadata::DBMetadata>(DBMetadata {
|
||||||
id: None,
|
id: None,
|
||||||
version: CURRENT_DB_VERSION,
|
version: CURRENT_DB_VERSION,
|
||||||
}).unwrap();
|
})
|
||||||
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
do_migration(&db);
|
do_migration(&db);
|
||||||
|
|||||||
@ -3,6 +3,13 @@ use crate::error::Error;
|
|||||||
use crate::models::insult_compliment::{RandomResponseTemplate, ResponseType};
|
use crate::models::insult_compliment::{RandomResponseTemplate, ResponseType};
|
||||||
use crate::models::random::{Random, RandomConfig};
|
use crate::models::random::{Random, RandomConfig};
|
||||||
use crate::{command, group, GlobalData, BAD_APPLE};
|
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 reqwest::Client;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serenity::all::{CreateAttachment, CreateMessage};
|
use serenity::all::{CreateAttachment, CreateMessage};
|
||||||
@ -14,13 +21,18 @@ use serenity::model::channel::Message;
|
|||||||
use serenity::utils::MessageBuilder;
|
use serenity::utils::MessageBuilder;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::time::Duration;
|
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]
|
#[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;
|
pub struct Joke;
|
||||||
|
|
||||||
#[derive(Clone, Serialize, Deserialize)]
|
#[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);
|
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 response = client.send_request(grpc_request).await?;
|
||||||
|
|
||||||
let raas_response = response.into_inner();
|
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() {
|
match raas_response.resp.unwrap() {
|
||||||
Resp::RollResp(roll_resp) => {
|
Resp::RollResp(roll_resp) => {
|
||||||
@ -288,7 +304,14 @@ async fn real_roll(ctx: &Context, msg: &Message, _args: Args) -> CommandResult {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Resp::Error(err) => {
|
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(())
|
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?;
|
.await?;
|
||||||
}
|
}
|
||||||
ItemType::TacticalNuke => {
|
ItemType::TacticalNuke => {
|
||||||
let mut users: Vec<User> = global_data.db.filter(|_, _user: &User| {
|
let mut users: Vec<User> = global_data.db.filter(|_, _user: &User| true)?.collect();
|
||||||
true
|
|
||||||
}
|
|
||||||
)?.collect();
|
|
||||||
|
|
||||||
for user in &mut users {
|
for user in &mut users {
|
||||||
for item in &mut user.inventory.inventory {
|
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;
|
item.quantity = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -106,7 +106,7 @@ impl Display for ItemType {
|
|||||||
ItemType::KillGun => "Kill Gun".to_string(),
|
ItemType::KillGun => "Kill Gun".to_string(),
|
||||||
ItemType::Helmet => "Helmet".to_string(),
|
ItemType::Helmet => "Helmet".to_string(),
|
||||||
ItemType::CancelRay => "Cancel Ray".to_string(),
|
ItemType::CancelRay => "Cancel Ray".to_string(),
|
||||||
ItemType::TacticalNuke => "Tactical Nuke".to_string()
|
ItemType::TacticalNuke => "Tactical Nuke".to_string(),
|
||||||
};
|
};
|
||||||
|
|
||||||
write!(f, "{}", name)
|
write!(f, "{}", name)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user