Recent from talks
Nothing was collected or created yet.
IRC bot
View on Wikipedia
An IRC bot is a set of scripts or an independent program that connects to Internet Relay Chat as a client, and so appears to other IRC users as another user. An IRC bot differs from a regular client in that instead of providing interactive access to IRC for a human user, it performs automated functions.
Function
[edit]Often, an IRC bot is deployed as a detached program running from a stable host. It sits on an IRC channel to keep it open and prevents malicious users from taking over the channel. It can be configured to give channel operator status to privileged users when they join the channel, and can provide a unified channel operator list. Many of these features require that the bot be a channel operator. Thus, most IRC bots are run from computers which have long uptimes (generally running a BSD derivative or Linux) and a fast, stable Internet connection. As IRC has become popular with many dial-up users as well, shell accounts at shell providers have become popular as a stable Linux server with a decent connection to run a bot from.
Aside from managing channel permissions, a bot can also perform functions such as logging what is posted to an IRC channel, giving out information on demand (very popular in IRC channels dealing with user support), creating statistics tracking the channel's top posters and longest-lived lurkers, or hosting trivia, Uno and other games. These functions are usually provided by scripts, often written in a scripting programming language such as Tcl or Perl by the bot's users. Channels dedicated to file sharing often use XDCC bots to distribute their files.
IRC bots are particularly useful on IRC networks such as EFnet and IRCnet without channel registration services, and on networks like Undernet or QuakeNet that require conditions to be met (minimum user count, etc.) before a channel may be registered. Where bots are used for administrative functions such as this, they may need more access than a normal client connection allows. Some versions of IRC have a "Service" protocol that allows clients with these extra powers. Such server-sanctioned bots are called IRC services.
Bots are not always welcome. Some IRC networks forbid the usage of bots. One of the reasons for doing so is that each nickname connected to the network increases the size of the network database which is being kept in sync across all servers. Allowing for bots in large networks can cause a relevant amount of network traffic overhead which needs to be financed and may even lead to netsplits.[1][2]
Comparison
[edit]| IRC bot | Primary developers | Software license | Operating system | Programming language | First public release - date (version) | Latest version - date (version) | Notable features | Function scope | Website |
|---|---|---|---|---|---|---|---|---|---|
| AnGeL-Bot | Benedikt Hübschen | GPL-3 | Windows | Visual Basic 6 | 1999 (1.2.0) | 2003-05-31 (1.6.2 BETA 10) | The fastest Windows IRC bot of its time, extensive scripting support via Windows Scripting, compatibility with multiple Active Scripting languages, colored partyline, and Eggdrop-compatible botnet support. | multi-purpose | [1] |
| Cardinal | John Maguire | MIT | Cross-platform | Python 3 | 2013-02-03 (beta) | 2021-01-13 (3.1.0) | Ease of development, re-loadable asynchronous plugins, python decorators for commands, IRC events, simple persistent JSON data storage and a well-documented API. | ? | [2] |
| Pynfo | kuran | GPL-2 | Cross-platform | Python | 2002-10-21 | 2013-02-27 | Network bridging/relaying, basic "infobot" capabilities, googling, 3 access tiers, and a shorter-link function. Easily extensible and fully disk-persistent. | ? | [3] |
| Supybot | Jeremiah Fincher, James Vega and others | BSD | Cross-platform | Python | ? (0.30) | 2018-05-10 (0.84.0) | Many plugins, SSL, multiple networks support, (un)loading plugins, threads, configuration registry, standardized command syntax, argument parsing | ? | [4], [5] |
| Cerberus | Stefan Hüsges | GPL-3.0 | Cross-platform | PHP | 2008-02-18 (beta) | 2016-10-04 (1.6.0) | ? | ? | [6] |
| Cinch | Dominik Honnef, Lee Jarvis | MIT | Unix-like | Ruby | 2010-07-08 (0.3.2) | 2015-03-31 (2.2.5) | Threaded, object-oriented | Bot writing framework | [7] |
| CNT Bot | CNT Bot Team | Unlicense | Unix-like | TCL | 2015-06-15 (0.1) | 2015-07-24 (0.2) | Voting, polling, elect/recall delegates, hold plenaries, admission control, automatically connects to other CNT Bots | Democracy software for digital activists building flat, horizontal networks | [8] |
| Darkbot | Jason Hamilton, juice | GPL | Unix-like | C | ? | ? | ? | responds to user questions from database | [9] |
| Daskeb | Digit | GPL | Unix-like | Haskell | ? | ? | minimal starter bot | ? | [10] |
| Eggdrop | Eggheads | GPL | Cross-platform | C | 1993-12 | 2022-03-06 (1.9.2) | SSL, botnet, partyline, filesharing, user management, IRC bot uptime contest, supports scripting in tcl | multi-purpose | [11] |
| EnergyMech | Proton | GPL | Unix-like | C | 1998-09-10 (2.5.24, first release by Proton) | 2018-03-09 (3.0.99p4) | single-thread multi-bot capable, low resource usage, botnet, user management, channel moderation, built-in irc bouncer, can be upgraded without disconnecting, IRC bot uptime contest, supports scripting in tcl, python. | multi-purpose | [12] |
| Erebot | François Poirotte | GPL-3.0 | Cross-platform | PHP | 2010-10-09 | 2011-05-08 | Extensible with many modules and support for multiple networks, multiple identities, SSL/TLS, STARTTLS, IdentD and various IRC daemons extensions. Can be used as a framework to create advanced channel bots. | games | [13] |
| Erwin | Idar Lund | GPL-2.0+ | Cross-platform | Perl | 2004-04-05 (1.0-beta1) | 2017-03-19 (1.2.0) | Easily expandable by writing new modules. | Replies to users from database. | [14] |
| FoxBot | Lee Watson | GPL-3.0 | Cross-platform | Java | ? | 2013-09-06 (0.9) | Command framework is designed to make writing commands easy. Has simple and powerful permissions system. Simple and fully explained config. | ? | [15] |
| FoxEye | Andriy Grytsenko | GPL | Unix-like | C | 2011-01 (beta) | 2011-02-24 (0.9b10) | Multithreaded, multinetworked. Encoding chosen per user or network. Extendible by plugins, can be used as client or whatever. Currently supported scripts: Lua, Tcl. | kit to build internet client / server / gateway, primary for messaging networks | [16] |
| Gambot | Derek Hoagland | GPL | Unix-like | Perl | 2011-1-1 | 2011-07-16 (1.0) | Framework for creating bots. Messages handled completely asynchronously. Extensible in any programming language. Can be updated without reconnecting, restarting, or reloading. | Twitter and other feeds, games / memes, | [17] |
| Gozerbot | Bart Thate | BSD | Unix-like | Python | ? | ? (1.0.1) | IRC and XMPP bot; can be bridged with Google Wave | ? | [18] |
| mikoskinen | Geoff Woollams | MIT | Cross-platform | C# | 2015-10-08 | 2015-10-09 (0.1) | IRC commands can launch any command line or http request to allow any program or script to control the bot by its output. MySQL support for non user initiated actions and 3rd party integration. | ? | [19] |
| guppy | Svetlana Tkachenko | GPL | Cross-platform | Python | 2011-03-20 | 2012-12-11 (0.4.3) | easy to install, modular structure | multi-purpose | [20] |
| Ibid | Jonathan Hitchcock, Michael Gorven, Stefano Rivera | GPL3, core under MIT | Unix-like | Python, Twisted in IM protocols | ? (0.1.0) | ? (0.1.1) | Twisted engine allows connecting to multiple IM sources, including IRC, XMPP, SILC, Campfire, NMDC | ? + plugin "factoids" responds to users from database | [21] |
| Infobot | Kevin Lenzo | Artistic License | Unix-like | Perl | 2004-08 | 2008-08-01 (1.5.3) | ? | replies to users from database | [22] |
| IrcBot | Marlinc | BSD | Unix-like | PHP | ? (0.1) | ? (1.2) | ? | ? | [23] |
| jenni | Michael Yanovich | EFLv2 | Unix-like | Python (2) | ? | ? | Threaded, general purpose, includes some games. Easily expandable by writing new modules. | user management, conversation / lookup, games | [24] |
| irccd | David Demelier | ISC | Cross-platform | C++17 and JavaScript | 2013-09-13 (1.0.0) | 2021-01-04 (3.1.1) | Multiple servers, rules filtering, templates system, cross-platform, extensible with JavaScript and C++ plugins | bot framework | [25] |
| Jerkbot | Jason Stephenson | Artistic License 2.0 | Cross-platform | Sleep | 2014-02-10 (1.0) | 2017-08-29 (1.7.65) | Configurable chatter bot, written as jIRCii script | responsive chatter + learns + modules | [26] |
| JSONBOT | Bart Thate | MIT | Unix-like | Python | 2010-04 | 2012-03-23 (0.84.4) | Beta | [27] | |
| JZBot | Alexander Boyd, Maximilian Dirkmann, James Stoker | LGPL | Cross-platform | Java | ? | ? | ? | feeds, werewolf / maffia, karma system, reminders | [28] |
| KGB | Martín Ferrari and Damyan Ivanov | GPL-2+ | Cross-platform | Perl | 2008-07-14 (Git) | 2014-09-17 (1.3.3) | KGB is a system that provides notifications on IRC for commits made to Git, Subversion and CVS repositories. | notifications on code commits | [29] |
| Lambdabot | Andrew J. Bromage et al. | MIT | Unix-like | Haskell | ? (1.0) | 2011-01-20 (4.2.3.2) | Many plugins; usable offline as a Haskell development tool; embeddable in GHCi | haskell development tool | [30] |
| Limnoria | BSD | Cross-platform | Python | ? | 2022-07-29 (2022.07.29) | See Supybot | A maintained fork of Supybot | [31] | |
| Mozbot | Ian Hickson, Chris Crews | MPL | Cross-platform | Perl | ? | ? | ? | services to developer communities | [32] |
| MrBot - AwesomeBot | MattMc | Apache v2 | Cross-platform | Java | November '13 | 2014-06-01 | A Semi-Advanced Java Bot with a ton of feactures and still more coming... join #AwesomeBot on espernet for more info.. | factoids + lastseen | [33] |
| nibblrjr | Kirjava | None | Cross-platform | JavaScript | ? | ? | bot framework for creating custom behaviour dynamically | Bot framework | [34] |
| node-irc | Martyn Smith | GPLv3 | Unix-like | JavaScript | ? | 2015-01-16 (0.3.9) | Node- native non blocking | NodeJS IRC library. | [35] |
| PircBot | Paul Mutton | GPL | Cross-platform | Java | 2001-08-01 | 2009-12-14 (1.5.0) | Framework for creating bots | framework to create bots | [36] |
| pmxbot | YouGov, Jamie Turner, Chris Mulligan | MIT | Unix-like | Python 3 | ? | ? | Designed to be extensible for a work IRC network | conversation, search, games | [37] |
| Ruby-rbot | ruby-rbot | GPL | Unix-like | Ruby | ? | ? | flexible plugin system | Twitter & RSS feeds, searches, games | [38] |
| Rubybot | umby24 | GPL-3.0 | Cross-platform | Ruby | ? | 2013-10-30 (4.2) | Simple, yet easily extensible. | user-management | [39] |
| Schongo | Selig, Posiden, Wil | ? | Cross-platform | Python 3 | ? | ? | Focus on simplicity, highly extendable module system, rapid development cycle | internet searches | [40] |
| Shadow | Aaron Blakely | MIT | Cross-platform | Perl | 2012-08-31 | 2022-06-09 | Reloadable plugins, channel management, weather info, link metadata fetching, RSS, and more. | multi-purpose, bot framework | [41] |
| Shocky | Shockah, clone1018 | GPL-2.0 | Cross-platform | Java | ? | ? | A Very advanced Java irc bot, that supports all kinds of stuff | user management, factoids, games, karma system | [42] |
| sircbot | Alpine Linux | GPL-2.0 | Unix-like | C (Lua scriptable) | ? | 2011-12-15 | Simple IRC bot for shell and lua scripts | ? | wiki |
| Sopel | dgw, Elsie Powell, Dimitri Molenaars, Elad Alfassa, Ari Koivula | EFLv2 | Cross-platform | Python | 2012-07-15 (3.0.0) | 2020-08-04 (7.0.6) | SSL, (un)loading of plugins at runtime, threaded, user/channel/plugin settings database, Python 3 support. (Formerly Willie; based originally on phenny) | Twitter & other feeds, internet searches, meetingbot, link information | [43] |
| Tennu | Havvy (Ryan Scheel) | ISC | Cross-platform | JavaScript | 2012-03-08 (1.0.0) | 2016-06-22 (4.9.0) | Node.js, Plugin architecture, Promise driven | user management | [44] |
| Ultros | gdude2002 and rakiru | Artistic License 2.0 | Cross-platform | Python2 | 2013-04-08 (Git) | 2014-09-25 (1.1.0+ - see commits) | Python IRC bot with an extensible plugin and protocol system, and a package manager. Also supports mumble. | internet searches, games | git |
| VikingBot | Tor Henning Ueland | GPL-3.0 | Unix-like | PHP | ? | 2013-10-09 | Simple PHP based IRC bot with support for secure IRC servers and plugin support | bot stats | [45] |
| Yauib | Julien Palard | Simplified BSD | Cross-platform | Python | 2011-03-22 | ? | Plugins can be written in any language | takes all pubmsg and priv and tries to match the first word as a command to a directory with exec files and the rest as parameters | [46] |
In popular culture
[edit]- Basshunter's 2006 song, Boten Anna, is about a female IRC user mistaken for an IRC bot
See also
[edit]References
[edit]- ^ RFC 1324 - 2.5.1, Size
- ^ von Loesch, Carl (2003-07-17). "Functionality provided by systems for synchronous conferencing: 1.2.1 Growth". Retrieved 2019-01-29.
External links
[edit]IRC bot
View on GrokipediaHistory
Origins in Early IRC
Internet Relay Chat (IRC) was developed by Jarkko Oikarinen in August 1988 at the University of Oulu in Finland as a replacement for the limited chat functionality of the local BBS system OuluBox.[9] Early IRC networks faced inherent technical limitations, including frequent network splits (netsplits) due to unreliable connections and a lack of mechanisms for persistent channel control, which enabled opportunistic takeovers by users exploiting operator privileges during operator absences or disconnections.[10] Bots emerged in the late 1980s and early 1990s as automated clients to mitigate these issues, providing continuous presence to safeguard channel ownership and perform basic moderation tasks that human operators could not reliably sustain amid connection instability and adversarial actions prevalent in growing networks like EFnet by the early 1990s.[3] These initial bots operated by idling in channels, logging conversations, issuing simple scripted responses, and enforcing rudimentary rules, thereby filling gaps in human oversight without advanced capabilities.[4] Among the earliest documented IRC bots were Puppe, created by Jyrki Alakuijala around late 1989 or early 1990 to engage in discussions and automate interactions; Game Manager, developed by Greg Lindahl to facilitate games such as Hunt the Wumpus; and Bartender, authored by Bill Wisner for service-oriented automation.[11] [3] [4] These prototypes demonstrated bots' utility in practical automation but were constrained by the era's primitive scripting, often running on limited hardware and prone to crashes or detection as non-human entities.[3]Development of Key Bot Software
The development of key IRC bot software accelerated in the early 1990s through open-source initiatives that emphasized channel protection, automation, and extensibility via scripting. Eggdrop, initiated by Robey Pointer in December 1993, stands as a foundational example, originally crafted in Tcl to safeguard the EFnet channel #gayteen by automating user management, kick protections, and basic services.[12] Its modular design, allowing Tcl script extensions for features like flood detection and access controls, rapidly positioned it as a de facto standard among channel operators seeking reliable, non-interactive presence in IRC environments.[13] By the mid-1990s, Eggdrop's influence spurred broader adoption of scripting-centric frameworks, with its active maintenance under the GNU General Public License fostering community contributions and derivatives.[14] Complementary bots emerged leveraging Perl's robust text-parsing capabilities for custom IRC interactions, such as real-time logging and trigger-based responses, aligning with Perl's surge in popularity for network scripting during this era. Similarly, Python's readability enabled early experimental bots for tasks like message filtering, though Tcl remained dominant for production-grade protection due to Eggdrop's proven stability. These advancements democratized bot deployment, enabling operators to counter disruptions like floods without constant human oversight.[15] The rapid proliferation of such bots in the early 1990s, coinciding with IRC's expansion, highlighted risks of over-automation, including channel instability from competing scripts, which influenced network operators to codify guidelines on bot behavior and permissions.[3] Eggdrop's enduring framework, still under development into the 2020s, exemplifies how these tools evolved from ad-hoc utilities into robust, scriptable systems that underpinned IRC's operational resilience.[12]Evolution into Malicious Variants
In the late 1990s, benign IRC bots such as Eggdrop, originally developed for channel administration, began to be reprogrammed for malicious purposes including network infiltration, user spying, and coordinated flooding attacks.[8] These adaptations exploited IRC's scripting capabilities to automate disruptive actions, with early instances tied to "IRC wars" where operators used flood scripts—precursors to distributed denial-of-service (DDoS) attacks—to seize control of unregistered channels by overwhelming servers with excessive messages.[16] Large-scale DoS incidents on IRC networks emerged as early as late 1996 and 1997, often leveraging vulnerabilities in client software to amplify floods from multiple sources.[17] By 1999, malware integrated IRC interfaces directly, marking a shift toward persistent backdoors; PrettyPark, an email-propagating worm also functioning as a password-stealing Trojan, represented one of the earliest examples with an IRC-based communication channel for remote control.[18] This evolution reflected IRC's inherent design as an open, plaintext protocol, which imposed no authentication or encryption barriers, allowing attackers to repurpose chat servers for command issuance with low resource demands and evasion of early detection tools.[19] During the 2000s, IRC bots proliferated as core components of botnets, with families like Win32/IRCBot—a backdoor Trojan—using IRC servers for command-and-control (C&C) due to the protocol's simplicity in broadcasting directives to infected hosts without proprietary infrastructure.[20] These variants enabled scalable operations such as DDoS orchestration and data exfiltration, as IRC's flood-prone structure and lack of built-in safeguards facilitated rapid bot herding; for instance, attackers could join channels to issue private messages triggering actions across hundreds of compromised systems.[8] The persistence stemmed from practical incentives—IRC's ubiquity reduced development costs—rather than any deliberate security oversights in the protocol's evolution.[21]Technical Functionality
Core Operational Mechanisms
IRC bots operate as client programs that establish connections to IRC servers using the IRC client protocol defined in RFC 2812, which supersedes the original specifications in RFC 1459.[22][23] This involves initiating a TCP/IP connection, typically on port 6667 for plaintext or 6697 for TLS-encrypted sessions, followed by registration commands such asNICK to set the bot's nickname and USER to provide user details.[24] Once connected, bots join channels via the JOIN command and maintain persistent sessions, parsing incoming server messages to trigger predefined actions.[22]
Core interactions revolve around event-driven responses to protocol messages, such as PRIVMSG for private or channel messages, JOIN for user entries, and PART or QUIT for departures.[24] Bots employ pattern-matching logic to evaluate message content— for instance, scanning for keywords, commands prefixed by triggers like "!", or user privileges— and generate deterministic outputs like replies, mode changes, or kicks.[24] This scripted reactivity ensures reliable automation, as responses derive causally from input parsing without reliance on external state beyond the protocol's message routing. However, the predictability of these rule-based mechanisms can expose bots to exploits, where attackers craft inputs to match patterns and elicit unintended behaviors, such as flooding or unauthorized actions.[22]
Common operational features include nickname services, where bots handle registration queries via private messages to prevent nickname squatting; auto-operations, which monitor JOIN events and issue MODE +o commands to grant operator status based on access lists; and logging, involving the capture and storage of parsed message data for auditing.[24] Advanced implementations may function as pseudoservers, linking to the IRC network via server-to-server protocols (RFC 2813) to emulate authoritative services like channel registration, thereby integrating seamlessly with client views while offloading processing from primary servers.[25][26] These mechanisms prioritize causal fidelity to protocol events, enabling scalable, rule-governed operations but necessitating robust input validation to mitigate abuse from malformed or adversarial messages.[22]
