docs.rs failed to build twitchchat-0.6.5
Please check the
build logs for more information.
See
Builds for ideas on how to fix a failed build,
or
Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault,
open an issue.
twitchchat
interface to the irc portion of twitch's chat
you provide implementations of ReadAdapter
and WriteAdapter
or, wrap an std::io::Read
and std::io::Write
with
ReadAdapter
and WriteAdapter
...and this provides all of the types for Twitch chat message.
see the docs for more info
if you don't want serde support, then include default-features = false
in your Cargo.toml
a demo of it:
fn main() {
use std::net::TcpStream;
use twitchchat::commands::PrivMsg;
use twitchchat::{Client, Writer, UserConfig, sync_adapters};
let userconfig = UserConfig::builder()
.nick(env!("MY_TWITCH_NAME"))
.token(env!("MY_TWITCH_PASS"))
.tags()
.membership()
.commands()
.build()
.expect("semi-valid config");
let read = TcpStream::connect(twitchchat::TWITCH_IRC_ADDRESS).expect("connect");
let write = read.try_clone().expect("must be able to clone");
let (read, write) = sync_adapters(read, write);
let mut client = Client::new(read, write);
let _tok = client.on(move |msg: PrivMsg, w: Writer| {
const KAPPA: usize = 25;
println!("{}: {}", msg.display_name().unwrap(), msg.message());
let kappas = msg
.emotes()
.iter()
.filter(|e| e.id == KAPPA)
.map(|d| d.ranges.len())
.sum::<usize>();
if kappas >= 3 {
w.send(msg.channel(), "Kappa").unwrap();
}
});
client.on(move |msg: PrivMsg, _: Writer| {
use twitchchat::BadgeKind::{Broadcaster, Subscriber};
let name = msg.display_name().unwrap_or_else(|| msg.irc_name());
let badges = msg
.badges()
.iter()
.map(|badge| badge.kind.clone())
.collect::<Vec<_>>();
match (
badges.contains(&Broadcaster),
badges.contains(&Subscriber),
msg.moderator(), ) {
(true, _, _) => println!("{} is the broadcaster", name),
(_, true, _) => println!("{} is a subscriber", name),
(_, _, true) => println!("{} is a mod", name),
(_, _, _) => {
}
};
});
client.register(userconfig).expect("register with twitch");
match client.wait_for_ready() {
Ok(user) => {
println!(
"id: {}, name: {:?}, color: {:?}",
user.user_id, user.display_name, user.color
)
}
Err(twitchchat::Error::InvalidRegistration) => {
eprintln!("invalid nick/pass");
std::process::exit(1);
}
Err(err) => panic!(err),
};
let w = client.writer();
w.join("museun").unwrap();
{
let w = w.clone();
std::thread::spawn(move || {
std::thread::sleep(std::time::Duration::from_secs(3));
w.send("museun", "VoHiYo").unwrap();
});
}
if let Err(err) = client.run() {
eprintln!("error while running: {}", err);
std::process::exit(1);
}
}