improved packet struct
This commit is contained in:
parent
886e29e72d
commit
17d7c6095f
16
src/bot.rs
16
src/bot.rs
|
@ -5,6 +5,7 @@ use serenity::{
|
|||
};
|
||||
use std::sync::mpsc;
|
||||
use crate::postman;
|
||||
use crate::discord_structure;
|
||||
|
||||
mod token;
|
||||
|
||||
|
@ -13,6 +14,7 @@ const HELP_COMMAND: &str = "!jiji";
|
|||
|
||||
struct Handler;
|
||||
|
||||
|
||||
#[async_trait]
|
||||
impl EventHandler for Handler {
|
||||
async fn message(&self, ctx: Context, msg: Message) {
|
||||
|
@ -31,22 +33,18 @@ impl EventHandler for Handler {
|
|||
println!("{} is connected!", ready.user.name);
|
||||
let guilds = context.cache.guilds().await;
|
||||
|
||||
let mut guild_names : Vec<String> = vec![];
|
||||
|
||||
if let Some(sender) = context.data.read().await.get::<postman::Sender>() {
|
||||
for guild_id in guilds {
|
||||
let guild_name : String = if let Some(guild) = context.cache.guild(guild_id).await {
|
||||
guild.name.clone()
|
||||
} else {
|
||||
"not found".to_string()
|
||||
};
|
||||
guild_names.push(guild_name.clone());
|
||||
println!("Guild : '{}' ({})", guild_id, guild_name);
|
||||
}
|
||||
println!("Guild : '{}' ({})", guild_name.clone(), guild_id.clone());
|
||||
|
||||
if let Some(sender) = context.data.read().await.get::<postman::Sender>() {
|
||||
let message = postman::Packet::new(postman::PacketKind::GuildName, guild_names[0].clone());
|
||||
sender.send(message).unwrap();
|
||||
println!("Message from bot to gui, sent");
|
||||
let guild = discord_structure::Guild::new(guild_name, guild_id.to_string());
|
||||
sender.send(postman::Packet::Guild(guild)).expect("Failed to send packet");
|
||||
}
|
||||
} else {
|
||||
println!("Failed to retrieve sender");
|
||||
}
|
||||
|
|
56
src/discord_structure.rs
Normal file
56
src/discord_structure.rs
Normal file
|
@ -0,0 +1,56 @@
|
|||
|
||||
pub struct Guild {
|
||||
pub name: String,
|
||||
pub id: String,
|
||||
pub channels: Vec<Channel>,
|
||||
}
|
||||
|
||||
impl Guild {
|
||||
pub fn new(name: String, id: String) -> Self {
|
||||
Self {
|
||||
name,
|
||||
id,
|
||||
channels: vec![],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pub struct Channel {
|
||||
pub name: String,
|
||||
pub id: String,
|
||||
pub guild_id: String,
|
||||
pub messages: Vec<Message>,
|
||||
}
|
||||
|
||||
impl Channel {
|
||||
pub fn new(name: String, id: String, guild_id: String) -> Self {
|
||||
Self {
|
||||
name,
|
||||
id,
|
||||
guild_id,
|
||||
messages: vec![],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pub struct Message {
|
||||
pub author_name: String,
|
||||
pub id: String,
|
||||
pub channel_id: String,
|
||||
pub guild_id: String,
|
||||
pub content: String,
|
||||
}
|
||||
|
||||
impl Message {
|
||||
pub fn new(author_name: String, id: String, channel_id: String, guild_id: String, content: String) -> Self {
|
||||
Self {
|
||||
author_name,
|
||||
id,
|
||||
channel_id,
|
||||
guild_id,
|
||||
content,
|
||||
}
|
||||
}
|
||||
}
|
15
src/main.rs
15
src/main.rs
|
@ -5,6 +5,7 @@ use tokio::runtime::Runtime;
|
|||
|
||||
mod bot;
|
||||
mod postman;
|
||||
mod discord_structure;
|
||||
|
||||
const MAX_FPS: f32 = 30.0;
|
||||
|
||||
|
@ -37,6 +38,7 @@ fn gui(receiver: mpsc::Receiver<postman::Packet>) {
|
|||
struct Jiji {
|
||||
next_frame: time::Instant,
|
||||
receiver: mpsc::Receiver<postman::Packet>,
|
||||
guilds: Vec<discord_structure::Guild>,
|
||||
}
|
||||
|
||||
impl Jiji {
|
||||
|
@ -44,6 +46,7 @@ impl Jiji {
|
|||
Self {
|
||||
next_frame: time::Instant::now(),
|
||||
receiver,
|
||||
guilds: vec![],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -56,7 +59,17 @@ impl eframe::App for Jiji {
|
|||
self.next_frame = time::Instant::now();
|
||||
|
||||
while let Ok(packet) = self.receiver.try_recv() {
|
||||
println!("Message from bot to gui received : {}", packet.content);
|
||||
match packet {
|
||||
postman::Packet::Guild(guild) => {
|
||||
println!("gui : guild received : '{}'", guild.name);
|
||||
}
|
||||
postman::Packet::Channel(channel) => {
|
||||
println!("gui : channel received : '{}'", channel.name);
|
||||
}
|
||||
postman::Packet::Message(message) => {
|
||||
println!("gui : message received : '{}'", message.content);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self.draw_feed(ctx);
|
||||
|
|
|
@ -1,23 +1,11 @@
|
|||
use std::sync::mpsc;
|
||||
use serenity::prelude::TypeMapKey;
|
||||
use crate::discord_structure;
|
||||
|
||||
pub struct Packet {
|
||||
pub kind: PacketKind,
|
||||
pub content: String,
|
||||
}
|
||||
|
||||
impl Packet {
|
||||
pub fn new(kind : PacketKind, content: String) -> Self {
|
||||
Self {
|
||||
kind,
|
||||
content,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pub enum PacketKind {
|
||||
GuildName,
|
||||
pub enum Packet {
|
||||
Guild(discord_structure::Guild),
|
||||
Channel(discord_structure::Channel),
|
||||
Message(discord_structure::Message),
|
||||
}
|
||||
|
||||
pub struct Sender;
|
||||
|
|
18
src/tree.rs
18
src/tree.rs
|
@ -1,18 +0,0 @@
|
|||
|
||||
struct Guild {
|
||||
name: String,
|
||||
id: String,
|
||||
channels: Vec<Channel>,
|
||||
}
|
||||
|
||||
struct Channel {
|
||||
name: String,
|
||||
id: String,
|
||||
messages: Vec<Message>,
|
||||
}
|
||||
|
||||
struct Message {
|
||||
author: String,
|
||||
id: String,
|
||||
content: String,
|
||||
}
|
Loading…
Reference in a new issue