Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bynect/pytmi
TMI (Twitch Messaging Interface) library for Python
https://github.com/bynect/pytmi
asynchronous asyncio client irc-client irc-library irc-protocol python python3 tmi twitch twitch-chat twitch-irc
Last synced: about 6 hours ago
JSON representation
TMI (Twitch Messaging Interface) library for Python
- Host: GitHub
- URL: https://github.com/bynect/pytmi
- Owner: bynect
- License: mit
- Created: 2021-01-01T04:03:07.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-10-10T06:48:27.000Z (about 1 month ago)
- Last Synced: 2024-11-09T14:18:21.316Z (10 days ago)
- Topics: asynchronous, asyncio, client, irc-client, irc-library, irc-protocol, python, python3, tmi, twitch, twitch-chat, twitch-irc
- Language: Python
- Homepage: https://pypi.org/project/pytmi/
- Size: 81.1 KB
- Stars: 9
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# pytmi
[![package_version](https://img.shields.io/pypi/v/pytmi)](https://pypi.org/project/pytmi/)
[![license](https://img.shields.io/pypi/l/pytmi)](https://choosealicense.com/licenses/mit/#)
[![python_version](https://img.shields.io/pypi/pyversions/pytmi)](https://www.python.org/)
[![wheel](https://img.shields.io/pypi/wheel/pytmi)](https://pypi.org/project/pytmi/)TMI (Twitch Messaging Interface) library for Python.
You can get your OAuth token with the site `https://twitchapps.com/tmi/`.
## Example
Here's a little application that logs in the user using OAuth, joins the Twitch channel requested by the user, sends the message `Hello, Twitch!` to the chat and then leaves the channel.
```python
import asyncio
import pytmiasync def main() -> None:
nick = input("Insert your Twitch nickname: ").strip()
token = input("Insert your Twitch OAuth token: ").strip()
channel = input("Insert the channel to join: ").strip()async with pytmi.Client() as client:
await client.login_oauth(token, nick, channel)
await client.join(channel)
await client.send_message("Hello, Twitch!")if __name__ == "__main__":
try:
loop = asyncio.new_event_loop()
loop.run_until_complete(main())
except:
print("Something went wrong.")
```You can find others usage example inside the [`test`](/test) directory.
## Known bugs
* Spurious errors when using SSL.
* Possible problems with pending tasks (if you don't cleanup them properly).
## Todos
* Handle connection and login error in a better way.
* Handle messages that are not correctly encoded in UTF8.
## Changelog
### v1.0.0
* Major version bump.
* Add a background task that collects messages in a buffer and sends pong as needed.
* Rewrite Client code.
* Change methods name (`part` -> `leave`, `privmsg` -> `send_message`).
* Add async context manager (`async with`) support for Client.
### v0.3.0
* Major library simplification and rewriting.
* Removed buggy background task.
* Add library logging.
### v0.2.3
* Add background task to collect messages (removed in `v0.3.0`).
* Refactor code.
### v0.2.2
* Add message buffer abstraction.
* Major code refactoring.
### v0.2.1
* Minor code refactoring.
### v0.2.0
* Rewrite library to be asynchronous.
* Add SSL support (enabled by default).
* Reorganize project structure.
### v0.1.1
* Minor code refactoring.
* Improve message handling and parsing.
### v0.1.0
* Initial version.