twitchchat 0.14.7

interface to the irc-side of twitch's chat system
Documentation
# twitchchat


[![Documentation][docs_badge]][docs]
[![Crates][crates_badge]][crates]
[![Actions][actions_badge]][actions]

This crate provides a way to interact with [Twitch]'s chat.

Along with parse messages as Rust types, it provides methods for sending messages.

It also provides an 'event' loop which you can use to make a bot.

## Opt-in features


By default, this crate depends on zero external crates -- but it makes it rather limited in scope. It can just parse/decode/encode to standard trait types (`std::io::{Read, Write}`).

To use the `AsyncRunner` (an async-event loop) you must able the `async` feature.

**_NOTE_** This is a breaking change from `0.12` which had the async stuff enabled by default.

```toml
twitchchat = { version = "0.14", features = ["async"] }
```

To use a specific `TcpStream`/`TlStream` refer to the runtime table below.

## Serde support


To enable serde support, simply enable the optional `serde` feature

## Runtime


This crate is runtime agonostic. To use..

| Read/Write provider                                        | Features                 |
| ---------------------------------------------------------- | ------------------------ |
| [`async_io`]https://docs.rs/async-io/latest/async_io/    | `async-io`               |
| [`smol`]https://docs.rs/smol/latest/smol/                | `smol`                   |
| [`async_std`]https://docs.rs/async-std/latest/async_std/ | `async-std`              |
| [`tokio`]https://docs.rs/tokio/0.2/tokio/                | `tokio` and `tokio-util` |

### TLS


If you want TLS supports, enable the above runtime and also enable the cooresponding features:

| Read/Write provider                                        | Runtime     | Features                                             | TLS backend                |
| ---------------------------------------------------------- | ----------- | ---------------------------------------------------- | -------------------------- |
| [`async_io`]https://docs.rs/async-io/latest/async_io/    | `async_io`  | `"async-tls"`                                        | [`rustls`][rustls]         |
| [`smol`]https://docs.rs/smol/latest/smol/                | `smol`      | `"async-tls"`                                        | [`rustls`][rustls]         |
| [`async_std`]https://docs.rs/async-std/latest/async_std/ | `async_std` | `"async-tls"`                                        | [`rustls`][rustls]         |
| [`tokio`]https://docs.rs/tokio/0.2/tokio/                | `tokio`     | `"tokio-util"`, `"tokio-rustls"`, `"webpki-roots"`   | [`rustls`][rustls]         |
| [`tokio`]https://docs.rs/tokio/0.2/tokio/                | `tokio`     | `"tokio-util"`, `"tokio-native-tls"`, `"native-tls"` | [`native-tls`][native-tls] |
| [`tokio`]https://docs.rs/tokio/0.2/tokio/                | `tokio`     | `"tokio-util"`, `"tokio-openssl"`, `"openssl"`       | [`openssl`][openssl]       |

[rustls]: https://docs.rs/rustls/0.18.1/rustls/
[native-tls]: https://docs.rs/native-tls/0.2.4/native_tls/
[openssl]: https://docs.rs/openssl/0.10/openssl/

## Examples


#### Using async_io to connect with..


- [async_io_demo.rs]./examples/async_io_demo.rs

#### Using async_std to connect with..


- [async_std_demo.rs]./examples/async_std_demo.rs

#### Using smol to connect with..


- [smol_demo.rs]./examples/smol_demo.rs

#### Using tokio to connect with..


- [tokio_demo.rs]./examples/tokio_demo.rs

#### How to use the crate as just a message parser(decoder)/encoder


- [message_parse.rs]./examples/message_parse.rs

#### An a simple example of how one could built a bot with this


- [simple_bot.rs]./examples/simple_bot.rs

## License


`twitchchat` is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See `LICENSE-APACHE` and `LICENSE-MIT` for details.

[docs_badge]: https://docs.rs/twitchchat/badge.svg
[docs]: https://docs.rs/twitchchat
[crates_badge]: https://img.shields.io/crates/v/twitchchat.svg
[crates]: https://crates.io/crates/twitchchat
[actions_badge]: https://github.com/museun/twitchchat/workflows/Rust/badge.svg
[actions]: https://github.com/museun/twitchchat/actions
[twitch]: https://dev.twitch.tv