From c01c8716de4a91e4c60f61cf0bb6eaeca5cbf619 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Wed, 11 Nov 2020 13:12:32 +0100 Subject: refactor to new files --- src/discord.rs | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/discord.rs (limited to 'src/discord.rs') diff --git a/src/discord.rs b/src/discord.rs new file mode 100644 index 0000000..06baec6 --- /dev/null +++ b/src/discord.rs @@ -0,0 +1,54 @@ +use discord::{ + model::Event, + Discord, +}; +use futures::join; +use tokio::{ + sync::mpsc, + task::{ + spawn, + spawn_blocking, + }, +}; + +pub async fn handle( + token: Option, + _sender: mpsc::UnboundedSender, + mut receiver: mpsc::UnboundedReceiver, +) { + println!("Setting up Discord"); + + let token = std::env::var("DISCORD_API_TOKEN") + .unwrap_or(token.unwrap()); + let client = Discord::from_bot_token(&token); + + if let Ok(client) = client { + let (mut connection, _) = client.connect().expect("discord connect failed"); //TODO + println!("Discord ready"); + + let (_, _) = join!( //TODO + spawn_blocking(move || { + loop { + match connection.recv_event() { + Ok(Event::MessageCreate(message)) => { + println!("{} says: {}", message.author.name, message.content); + } + Ok(_) => {} + Err(discord::Error::Closed(code, body)) => { + println!("Discord closed with code {:?}: {}", code, body); + break; + } + Err(err) => { + println!("Error: {:?}", err); + } + } + } + }), + spawn(async move { + while let Some(s) = receiver.recv().await { + println!("Discord received '{}' from slack", s); + } + }) + ); + } +} -- cgit v1.2.1