{"id":18740356,"url":"https://github.com/richrd/bx","last_synced_at":"2025-11-19T21:30:14.552Z","repository":{"id":20946558,"uuid":"24235001","full_name":"richrd/bx","owner":"richrd","description":"Modular Python IRC bot made from scratch.","archived":false,"fork":false,"pushed_at":"2015-08-22T21:51:51.000Z","size":898,"stargazers_count":4,"open_issues_count":7,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-12-28T18:39:41.378Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/richrd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-09-19T15:27:10.000Z","updated_at":"2016-09-01T07:32:48.000Z","dependencies_parsed_at":"2022-08-30T21:30:47.446Z","dependency_job_id":null,"html_url":"https://github.com/richrd/bx","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richrd%2Fbx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richrd%2Fbx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richrd%2Fbx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richrd%2Fbx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richrd","download_url":"https://codeload.github.com/richrd/bx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239619572,"owners_count":19669447,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T15:39:04.830Z","updated_at":"2025-11-19T21:30:14.508Z","avatar_url":"https://github.com/richrd.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bx\n     _______   ___    ___\n    |   __   \\ \\  \\  /  /\n    |  |__|  |  \\  \\/  /\n    |   _____/   \\    /\n    |   __   \\   /    \\\n    |  |__|  |  /  /\\  \\\n    |________/ /__/  \\__\\\n\nModular Python IRC bot made from scratch.\n\nCome and talk to me at #bxbot @ QuakeNet :)\n\n## Features\n* 50+ modules with general features including:\n  * Authentication with different userlevels\n  * Auto op for trusted users\n  * Leave a message to an offline user\n  * Broadcast text or command output to channels periodicly\n  * Channel logs and log searching\n  * Highlight command to highlight everyone on a channel\n  * Channel mode enforcing\n  * Join and part commands\n  * Will answer simple questins\n  * Nick changer\n  * Calculator\n  * Link title paster\n  * 'wtf' for looking up acronyms\n  * Bot host status information\n  * Command line interface for managing bot\n  * Bitcoin and Dogecoin exchange rates\n  * Reittiopas.fi public transport route search\n* Integrated help available\n* Supports user accounts and access control\n* Simple to extend if you know Python\n* Aims to be compatible with Symbian S60 for hosting a bot on a phone :)\n  * Comming later: module for shooting and uploading pictures from a phone\n\n![Command line view of the bot.](https://raw.githubusercontent.com/richrd/bx/master/screenshots/console1.png)\n\n## Usage:\n*   To run bx:\n    \u003e python bot.py\n\n*   To run with alternative config file:\n    \u003e python bot.py [config_file]\n\nTo manage the bot on the command line use CTRL+C and type a command.\n\n\n## To-do\n* Release first majour version\n\n### Documentation\n* More comments\n* General docs\n* Add config description to README.md\n  * Or directly into config.txt\n* Module developement docs and API reference\n\n### Features\n* [ ] Core\n   * [ ] Don't start bot if config file is broken\n      * [ ] Instead just print an error on the command line\n   * [ ] Store config data in same order as it was loaded (not alphabetically)\n   * [ ] Use throttle detection to delay reconnecting (if G-lined etc)\n   * [ ] Implement ignoring users that haven't authed\n   * [ ] Multi server support?\n   * [ ] DCC Chat?\n* [ ] Config\n   * [ ] Rename `avoid_cmd_crash` to `cmd_crash_proof`\n   * [ ] Group cmd config\n* [ ] Modules\n   * [ ] Camera module for taking photos and uploading them via ftp. Aiming to support\n      * [ ] Raspberry Pi\n      * [ ] Symbian S60\n      * [ ] Linux in general\n   * [ ] Ignore and unignore users\n   * [ ] Autokick unknown or untrusted users from a channel\n* [ ] PyS60-specific functionality (maybe, probably not)\n\n## Module List\n*   addaccount\n    \u003e Create a new account.\n    \u003e Usage: addaccount username password password\n\n*   addchan\n    \u003e Add a channel to the autojoin list.\n\n*   alias\n    \u003e Defines a new command alias.\n    \u003e Usage: alias new_name command [args]\n\n*   auth\n    \u003e Identify yourself with the bot (login). Only works via private messages.\n    \u003e Usage: auth username password\n\n*   autochanmode\n    \u003e Automatically manage channel modes according to config.\n\n*   autoop\n    \u003e Automatically give OP to authed users.\n\n*   autorejoin\n    \u003e Automatically rejoin a channel after kick.\n\n*   broadcast\n    \u003e Broadcast messages or command output to channels and/or users (targets).\n    \u003e Usage: broadcast [+-]name target[,target,...] interval command [args]\n    \u003e Usage: broadcast [+-]name target[,target,...] interval :message\n    \u003e Usage: broadcast +hello #chan1,#chan2 1h :hello world!\n\n*   btc\n    \u003e Display the current Bitcoin exchange rate. Default exchange is bitstamp. Usage: btc [exchange]\n\n*   calc\n    \u003e Calculate math expressions. e.g. calc 3+4*6\n\n*   clearlogs\n    \u003e Clear n. number of messages from window logs (or all if no arguments given).\n\n*   cli\n    \u003e A command line interface for the bot. Activate with CTRL+C in console.\n\n*   cmdprefix\n    \u003e Check or set the command prefix that the bot will respond to.\n\n*   cmds\n    \u003e Lists the commands you can use.\n\n*   deauth\n    \u003e Logout of the bot.\n\n*   define\n    \u003e Defines terms and words related to the bot.\n\n*   delchan\n    \u003e Remove a channel from the autojoin list.\n\n*   deop\n    \u003e Take OPs from a nick.\n\n*   die\n    \u003e Kill the bot. Warning: I won't rise from my ashes like a fenix!\n\n*   dogecoin\n    \u003e Display the current DogeCoin exchange rate, from bter. Usage: dogecoin\n\n*   dropsend\n    \u003e Clear the outgoing message buffer. Warning: removes all data queued for sending to the IRC server.\n\n*   evl\n    \u003e Evaluate a python expression.\n\n*   exc\n    \u003e Execute python code.\n\n*   gainop\n    \u003e Have the bot request OPs from QuakeNet (if channel has no OPs).\n\n*   githubnotif\n    \u003e Sends notification of new github commits to all channels.\n\n*   help\n    \u003e Provide basic instructions on using the bot.\n    \u003e Usage: help [module]\n\n*   highlight\n    \u003e Highlight everyone on the current channel.\n\n*   join\n    \u003e Join list of channels, or rejoin the current channel if no channels are given.\n\n*   kick\n    \u003e Kick a user off a channel.\n    \u003e Usage: kick [#channel] nick\n\n*   level\n    \u003e View your permission level (or someone elses).\n\n*   logs\n    \u003e Print channel logs. Set time with e.g. 1h or 10m. Search logs with ?query (parameter starting with ?). Example: logs 2h ?hello\n\n*   mod\n    \u003e Enable or disable modules (commands \u0026 listeners).\n    \u003e Usage: mod [-/+]module_name\n    \u003e e.g. prefix module name with - or + for disable or enable\n\n*   modlevel\n    \u003e Change the permission level of a module.\n    \u003e Usage: modlevel mod level\n\n*   msg\n    \u003e Send a message as the bot to a user or channel.\n\n*   msgcount\n    \u003e Show the message log size of the current window.\n\n*   newpass\n    \u003e Change your password.\n    \u003e Usage: newpass oldpassword newpassword newpassword\n\n*   nick\n    \u003e Change the nick of the bot. If nick isn't available, the nick will be reclaimed when it becomes available.\n\n*   op\n    \u003e Give OPs to yourself (default), or a list of nicks, or everyone (with '*').\n\n*   part\n    \u003e Part list of channels.\n\n*   ping\n    \u003e Ping the bot, to make sure it's alive and kicking.\n\n*   qauth\n    \u003e Automatically auth with Q @ QuakeNet when connecting to IRC.\n\n*   raw\n    \u003e Send raw data to the irc server.\n\n*   recon\n    \u003e Reload bot config.\n\n*   reittiopas\n    \u003e Get public transport routes via www.reittiopas.fi. Usage: reittiopas start_address - end_address\n\n*   remod\n    \u003e Reload bot modules.\n\n*   run\n    \u003e Run a command as another user (and/or on another channel). Usage: [channel] user command\n\n*   status\n    \u003e Get status information of the host running the bot.\n\n*   storeconf\n    \u003e Store configuration.\n\n*   tell\n    \u003e Send a message to a user when they come online.\n    \u003e Usage: tell nick message\n\n*   topic\n    \u003e Change the channel topic. To add to the current topic, start your topic with a '+' symbol.\n\n*   trustme\n    \u003e Remember your account. Connects your current hostname to your account so you don't have to auth every time you connect.\n\n*   unknowncmd\n    \u003e Intercept unknown commands and try to respond. Experimental!\n\n*   url\n    \u003e Find links in messages and post link titles when found.\n\n*   userinfo\n    \u003e View info about you or another nick.\n\n*   userlevel\n    \u003e Change the permission level of a user.\n    \u003e Usage: userlevel user level\n\n*   view\n    \u003e View various bot information.\n\n*   weather\n    \u003e Display the current weather conditions. Usage: weather [location]\n\n*   wtf\n    \u003e Show definitions for common acronyms or define new ones.\n    \u003e Usage: wtf acronym\n    \u003e Usage: wtf +acronym description\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichrd%2Fbx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichrd%2Fbx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichrd%2Fbx/lists"}