diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2020-11-11 13:12:32 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2020-11-11 13:12:32 +0100 |
| commit | c01c8716de4a91e4c60f61cf0bb6eaeca5cbf619 (patch) | |
| tree | 0200d799a125c3aa9b85cfe5453c645c05fbb7e8 /src/discord.rs | |
| parent | a6fd44ae860ce48b6a7979a2c8b380c11fa7168e (diff) | |
| download | kodapa-c01c8716de4a91e4c60f61cf0bb6eaeca5cbf619.tar.gz | |
refactor to new files
Diffstat (limited to 'src/discord.rs')
| -rw-r--r-- | src/discord.rs | 54 |
1 files changed, 54 insertions, 0 deletions
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<String>, + _sender: mpsc::UnboundedSender<String>, + mut receiver: mpsc::UnboundedReceiver<String>, +) { + 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); + } + }) + ); + } +} |
