Skip to content
Cette page a été générée et traduite avec l'aide de l'IA. Si vous remarquez des inexactitudes, n'hésitez pas à contribuer. Modifier sur GitHub

IRC

Connecter PRX a Internet Relay Chat (IRC) servers over TLS avec prise en charge de channels, DMs, and multiple authentication methods.

Prerequis

  • An IRC server to connect to (e.g., Libera.Chat, OFTC, ou un private server)
  • A nickname for le bot
  • TLS-enabled IRC server (port 6697 is the standard)

Quick Setup

1. Choose a Server and Register a Nickname (optional)

For public networks like Libera.Chat, you may want to register your bot's nickname with NickServ:

/msg NickServ REGISTER <password> <email>

2. Configure

toml
[channels_config.irc]
server = "irc.libera.chat"
port = 6697
nickname = "prx-bot"
channels = ["#my-channel"]
allowed_users = ["mynick", "*"]

With NickServ authentication:

toml
[channels_config.irc]
server = "irc.libera.chat"
port = 6697
nickname = "prx-bot"
channels = ["#my-channel", "#another-channel"]
allowed_users = ["*"]
nickserv_password = "your-nickserv-password"

3. Verify

bash
prx channel doctor irc

Configuration Reference

ChampTypeDefautDescription
serverStringrequiredIRC server hostname (e.g., "irc.libera.chat")
portu166697IRC server port (6697 for TLS)
nicknameStringrequiredBot nickname sur le IRC network
usernameStringnicknameIRC username (par defaut the nickname si non defini)
channels[String][]IRC channels to join on connect (e.g., ["#channel1", "#channel2"])
allowed_users[String][]Allowed nicknames (case-insensitive). Empty = deny all. "*" = allow all
server_passwordStringnullServer password (for bouncers like ZNC)
nickserv_passwordStringnullNickServ IDENTIFY password for nickname authentication
sasl_passwordStringnullSASL PLAIN password for IRCv3 authentication
verify_tlsbooltrueVerify le serveur's TLS certificate

Fonctionnalites

  • TLS encryption -- all connections use TLS for security
  • Multiple authentication methods -- supports server password, NickServ IDENTIFY, and SASL PLAIN (IRCv3)
  • Multi-channel support -- join and respond in multiple channels simultaneously
  • Support des canaux et des MP -- gere a la fois channel PRIVMSG and direct messages
  • Plain text output -- responses sont automatiquement adapted for IRC (no markdown, no code fences)
  • Smart message splitting -- long messages are split respecting IRC's line length limits
  • Connection keepalive -- responds to server PING messages and detects dead connections (5-minute read timeout)
  • Monotonic message IDs -- garantit unique message ordering under burst traffic

Limiteations

  • IRC est en texte brut uniquement; le markdown, le HTML et la mise en forme enrichie ne sont pas pris en charge
  • Messages sont soumis a IRC line length limits (typically 512 bytes including protocol overhead)
  • Non built-in media or file sharing capability
  • Connection may drop if le serveur ne fait pas receive a response to PING within the timeout
  • Some IRC networks have anti-flood measures that may rate-limit le bot
  • Nick changes and reconnection after network splits are handled but may cause brief interruptions

Depannage

Cannot connect to IRC server

  • Verify the server hostname and port are correct
  • Ensure port 6697 (TLS) n'est pas bloque par un pare-feu
  • If using a self-signed certificate, set verify_tls = false

Bot joins channels but ne fait pas respond

  • Verifiez que the sender's nickname is in allowed_users (case-insensitive matching)
  • Set allowed_users = ["*"] to allow all users for testing
  • Verify le bot has permission to speak in the channel (not muted or banned)

NickServ authentication fails

  • Ensure nickserv_password is correct
  • Le bot nickname doit etre registered with NickServ before it can identify
  • Some networks require SASL authentication au lieu de NickServ; use sasl_password in that case

Released under the Apache-2.0 License.