Simple and lightweight IM application for multi-user systems (e.g. Windows Server).
Find a file
2026-04-11 14:36:49 -07:00
assets/internal delete unneeded wavs 2026-04-11 11:14:35 -07:00
examples bot client 2026-04-11 14:36:49 -07:00
.gitignore bot client 2026-04-11 14:36:49 -07:00
botclient.py bot client 2026-04-11 14:36:49 -07:00
LICENSE license 2026-04-11 05:50:06 -05:00
r2chat.py user info and channel list 2026-04-11 12:39:11 -07:00
README.md bot client 2026-04-11 14:36:49 -07:00
requirements.txt add requirements.txt 2026-04-11 11:16:50 -07:00

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")
]