twitch_chat_wrapper/
lib.rs1mod bot;
2pub mod chat_message;
3
4use bot::Bot;
5pub use chat_message::ChatMessage;
6use eyre::Result;
7use std::sync::mpsc::{Receiver, Sender};
8pub use twitchchat;
9use twitchchat::UserConfig;
10
11pub fn run(
12 receive_for_chat: Receiver<String>,
13 send_incomming_chat_message: Sender<ChatMessage>,
14) -> Result<()> {
15 dotenv::dotenv().ok();
16 let user_config = get_user_config()?;
17 let channels = channels_to_join()?;
18 let bot = Bot;
19
20 smol::run(async move {
22 bot.run(
23 &user_config,
24 &channels,
25 receive_for_chat,
26 send_incomming_chat_message,
27 )
28 .await
29 })
30}
31
32fn get_env_var(key: &str) -> Result<String> {
33 let my_var = std::env::var(key)?;
34 Ok(my_var)
35}
36
37fn channels_to_join() -> Result<Vec<String>> {
38 let channels = get_env_var("TWITCH_CHANNEL")?
39 .split(',')
40 .map(ToString::to_string)
41 .collect();
42 Ok(channels)
43}
44
45fn get_user_config() -> Result<twitchchat::UserConfig> {
46 let name = get_env_var("TWITCH_NAME")?;
47 let token = get_env_var("TWITCH_TOKEN")?;
48
49 let config = UserConfig::builder()
50 .name(name)
51 .token(token)
52 .enable_all_capabilities()
53 .build()?;
54
55 Ok(config)
56}