Ruby a IRC

Na počátku byly sockety a RFC-1459. Touto cestou bych doporučoval vydat se lidem, kteří se chtějí naučit práci s tcp/ip sockety a zároveň porozumět komunikačnímu protokolu, na kterém IRC stojí. Já jsem se však touto cestou vydal již několikrát při programování irc robotů v Object Pascalu, C/C++ i v PHP, a proto jsem při myšlence naprogramovat IRC bota v Ruby rovnou začal hledáním knihovny, která by za mne obstarala implementaci irc protokolu. Výběr není nijak velký, ale pro moje potřeby naprosto dostačující.
Své hledání jsem narazil na projekt Rica. Při pohledu na features vás jistě hned zaujme, že je to celé postavené na eventech. Už jenom to samotné pro mě bylo dostatečným důvodem se na tuto knihovnu podívat blíže.

Struktura Rica

Třídy, které Rica poskytuje:

  • class Rica::Message
  • class Rica::Connector
  • class Rica::ConnectionManager
  • class Rica::MessageDistributor
  • class Rica::Rica
  • class Rica::CtcpResponder
  • class Rica::MessageProcessor

Využité části Rica

Při programování IRC bota využijeme hlavně třídu Rica::MessageProcessor, od které odvodíme hlavní třídu našeho budoucího automatizovaného miláčka.

  class CBarcBot < Rica::MessageProcessor
  end

Pak už se náš úkol zúží jen na programování reakcí na eventy, které vyvolává server nebo uživatel. Jak se konkrétně připojit k IRC serveru, jak posílat PRIVMSG atd. už lze snadno vyčíst z manualu, takže RTFM :)

Chyba v Rica

Objevil jsem v knihovně Rica (v 0.10) drobnější chybku, týkající se implementace příkazu MODE, proto místo metody cmnd_mode používejte:

  directcommand(msg.server, "MODE <vaše parametry>")

Personal Tools