r2chat/README.md
2026-04-11 14:36:49 -07:00

90 lines
2.1 KiB
Markdown

# r2chat
Simple and lightweight IM application for multi-user systems (e.g. Windows Server).
Created by Dogo6647 with Python and Tkinter.
## Usage
Place r2chat folder on C:\ on windows or inside any other location accessible by all users.
Make sure you're running the script from within the folder it's in.
```
python r2chat.py
```
- Chat history is saved as `chat_CHANNEL.txt` inside either "C:\Users\Public\r2chat\" on Windows
or "/var/tmp/r2chat/" on Unix-like.
- Preferences are stored as a json in your home directory and can be changed
directly from the GUI by clicking "Preferences" on the menu bar.
- You can insert color text into the chat by using the following syntax: `((#XXXXXX | yourtext))`
- The "insert" menu is not functional yet.
## Bot client usage
You can look at `examples/botexample.py` for an example working setup you can use as a template.
Unlike regular r2chat, the bot client doesn't require any dependencies and its config file
is stored as `r2bot.config.json` where you're running the script from, so it's important
to separate bots between directories to prevent them from overwriting each other's files.
### Bot client API
#### Init:
```
bot = r2bot(channel, username)
```
#### Sending a message:
```
bot.send(msg)
```
#### Sending a system message:
```
bot.system_message(msg)
```
#### Receiving messages
```
messages = bot.poll()
```
Returns a list of new lines and triggers event callbacks,
which can be used like this:
```
def handlemsg(msg):
print("got message:", msg)
# Register event
bot.on("on_message", handlemsg)
```
List of possible on-event types:
- "on_message"
- "on_mention"
- "on_system"
#### Statuses
```
bot.set_status(status)
```
List of standard statuses:
- "online"
- "offline"
- "inactive"
- "busy"
#### Leave signal
```
bot.leave_channel()
```
#### Parse text blocks
The bot client can split normal text and colored text
into an array;
```
segments = bot.parse_colors(text)
```
Would output something like:
```
[
("text", "normal text"),
("color", "#ff0000", "This is red text")
]
```