|
1 |
| -use owo_colors::OwoColorize; |
| 1 | +use crate::Context; |
2 | 2 | use poise::{serenity_prelude as serenity, CreateReply};
|
| 3 | + |
3 | 4 | use redis::AsyncCommands;
|
| 5 | +use redis_macros::{FromRedisValue, ToRedisArgs}; |
4 | 6 |
|
5 |
| -use crate::Context; |
6 | 7 | use anyhow::Result;
|
| 8 | +use owo_colors::OwoColorize; |
7 | 9 |
|
8 | 10 | #[derive(poise::ChoiceParameter, serde::Serialize, serde::Deserialize, Clone, Copy, Debug)]
|
9 | 11 | #[serde(rename_all = "lowercase")]
|
@@ -49,7 +51,7 @@ impl std::fmt::Display for PresenceChoice {
|
49 | 51 | }
|
50 | 52 | }
|
51 | 53 |
|
52 |
| -#[derive(serde::Serialize, serde::Deserialize, Clone, Debug)] |
| 54 | +#[derive(serde::Serialize, serde::Deserialize, FromRedisValue, ToRedisArgs, Clone, Debug)] |
53 | 55 | struct PresenceData {
|
54 | 56 | content: String,
|
55 | 57 | #[serde(rename = "type")]
|
@@ -98,19 +100,17 @@ pub async fn presence(
|
98 | 100 |
|
99 | 101 | if let Some(redis) = &ctx.data().redis {
|
100 | 102 | let mut conn = redis.get_async_connection().await?;
|
101 |
| - conn.set("presence-v1", serde_json::to_string(&presence_data)?) |
102 |
| - .await?; |
| 103 | + conn.set("presence-v1", presence_data).await?; |
103 | 104 | }
|
104 | 105 |
|
105 | 106 | Ok(())
|
106 | 107 | }
|
107 | 108 |
|
108 | 109 | pub async fn restore(ctx: &serenity::Context, redis_client: &redis::Client) -> Result<()> {
|
109 | 110 | let mut conn = redis_client.get_async_connection().await?;
|
110 |
| - let data: Option<String> = conn.get("presence-v1").await?; |
| 111 | + let data: Option<PresenceData> = conn.get("presence-v1").await?; |
111 | 112 |
|
112 | 113 | if let Some(data) = data {
|
113 |
| - let data: PresenceData = serde_json::from_str(&data)?; |
114 | 114 | ctx.set_presence(Some(data.make_activity()), serenity::OnlineStatus::Online);
|
115 | 115 | println!("{} presence from Redis", "Restored".cyan());
|
116 | 116 | }
|
|
0 commit comments