https://github.com/zigzter/chatterm
A Twitch.tv chat client in the terminal, supporting moderator actions
https://github.com/zigzter/chatterm
bubbletea chat irc-client terminal terminal-app twitch twitch-api
Last synced: 5 months ago
JSON representation
A Twitch.tv chat client in the terminal, supporting moderator actions
- Host: GitHub
- URL: https://github.com/zigzter/chatterm
- Owner: zigzter
- License: other
- Created: 2023-09-16T05:49:25.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-11-01T21:28:28.000Z (8 months ago)
- Last Synced: 2025-11-01T22:08:50.547Z (8 months ago)
- Topics: bubbletea, chat, irc-client, terminal, terminal-app, twitch, twitch-api
- Language: Go
- Homepage:
- Size: 8.7 MB
- Stars: 48
- Watchers: 2
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Chatterm
Twitch chat in the terminal, with moderator actions.



## ⚡ Features
- View and send messages.
- Built-in authentication via Twitch.
- Ban & timeout users, clear chat, query user info
- Search received messsages, powered by the FTS5 extension of SQLite
- Username autocomplete on `@` mentions and `/` commands, triggered by pressing tab.
## 🔧 Tech Used
- Bubble Tea for the terminal UI
- Gorilla WebSocket for the websocket connection
- SQLite for storage
- Viper for configuration
## 🖥️ Supported Platforms
Currently only tested on Linux. macOS might work if you build it yourself.
## 📦 Installation
Cloning option (requires Go):
1. `git clone https://github.com/zigzter/chatterm.git`
2. `cd chatterm`
3. `go build --tags "fts5" .`
4. `./chatterm`
If you have to re-auth for whatever reason, and the oauth request gets stuck loading, try removing the connection from Twitch Connections, then retry the auth.
Downloading binary option:
Simply download the binary and run `./chatterm`
## 🚀 Supported Commands
- Ban a user: `/ban username`
- Timeout a user: `/ban username timeInSeconds`
- Search for messages: `/search something to search`
- `from:username` restricts search to messages sent by that user
- `channel:channelName` restricts search to messages in that channel
- Supports wildcards and is case insensitive: `kek*` will find `KEKW`
- Supports `AND`, `NOT`, and `OR` keywords. `/search tf2 OR ow2` will find all messages that contain at least one of those
- This search queries the local DB, so it will only find messages that you've received while in the chat rooms
- Clear chat: `/clear` (this is the moderator clear, not a local one)
- Get a user's info: `/info username`
- Send an announcement: `/announcement something to announce`
- Give a streamer a shoutout: `/shoutout username` (untested, only works if the channel you're in is live)
- Warn a user, requiring them to acknowledge the warning before they can resume chatting: `/warn username reason`
- Delete all locally stored chat messages: `/clearall`
- Enable/disable shield mode: `/shield on|off`
- Watch a user (highlight their messages): `/watch username`
- To remove the user, re-run the command
- You can also manually edit the `$HOME/.config/chatterm.json` file to add/remove users under the `watched-users` key