{"id":33180751,"url":"https://github.com/eazar001/yesbot","last_synced_at":"2025-11-20T21:04:47.003Z","repository":{"id":25832543,"uuid":"29271938","full_name":"eazar001/yesbot","owner":"eazar001","description":"IRC Bot Written in Prolog","archived":false,"fork":false,"pushed_at":"2021-05-23T14:45:59.000Z","size":456,"stargazers_count":20,"open_issues_count":7,"forks_count":5,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2025-10-21T21:49:17.985Z","etag":null,"topics":["bot","irc","irc-bot","irc-client","prolog","swi-prolog"],"latest_commit_sha":null,"homepage":null,"language":"Prolog","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eazar001.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":"2015-01-14T23:55:56.000Z","updated_at":"2024-10-27T00:17:38.000Z","dependencies_parsed_at":"2022-08-06T08:00:35.142Z","dependency_job_id":null,"html_url":"https://github.com/eazar001/yesbot","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/eazar001/yesbot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eazar001%2Fyesbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eazar001%2Fyesbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eazar001%2Fyesbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eazar001%2Fyesbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eazar001","download_url":"https://codeload.github.com/eazar001/yesbot/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eazar001%2Fyesbot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285512110,"owners_count":27184310,"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","status":"online","status_checked_at":"2025-11-20T02:00:05.334Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["bot","irc","irc-bot","irc-client","prolog","swi-prolog"],"created_at":"2025-11-16T04:00:23.090Z","updated_at":"2025-11-20T21:04:46.998Z","avatar_url":"https://github.com/eazar001.png","language":"Prolog","funding_links":[],"categories":["Miscellaneous"],"sub_categories":[],"readme":"Yesbot\r\n======\r\n### An IRC Bot Written in Prolog\r\n\r\n* Multi-threaded extensible bot with a \"pluggable\" system.\r\n* Extensions are assumed to be mutually exclusive and will run concurrently.\r\n* Written with the SWI Prolog implementation -- [SWI Prolog Website](http://www.swi-prolog.org/)\r\n\r\n\r\nConfiguration\r\n=============\r\n\r\nBefore doing anything, you must first install the `irc_client` pack for SWI-Prolog from the interpreter\r\n```prolog\r\n?- pack_install(irc_client).\r\n```\r\n\r\nAferwards, you must configure the bot using the settings tools in SWI-Prolog.\r\n\r\nExamine `config.pl` (using `swipl config.pl`)\r\n\r\nIf you would like to change which extensions are loaded on bot startup you must use:\r\n```prolog\r\n\r\n% replace these plugin names with valid ones\r\n?- set_extensions([plugin1, plugin2]).\r\n\r\n```\r\nAny other settings you need to change, you can change by doing:\r\n```prolog\r\n\r\n?- set_setting(config:nick, examplebot).\r\n\r\n```\r\nYou can _check_ your current settings with:\r\n```prolog\r\n?- setting(config:nick, examplebot).\r\n\r\n```\r\nWhen done persist them with:\r\n```prolog\r\n\r\n?- save_settings.\r\n\r\n```\r\nThey'll be saved in a new file, `settings.db`, in your working directory.\r\n\r\nThis file should not be added to git's managed files.\r\n\r\n`settings.db` can be edited manually if you desire.\r\n\r\nDo be aware that the default logs the bot onto ##prolog and ##math\r\n\r\nPlease bot responsibly.\r\n\r\n\r\nRunning the bot\r\n===============\r\nAfter chmod 755 run.pl, execute the bot like such:\r\n```prolog\r\n\r\n./run.pl\r\n\r\n```\r\n\r\nExtending the bot\r\n=================\r\n\r\nThere are numerous demo plugins that come with Yesbot. A few of which includes a basic chat-logging\r\nextension and a TinyURL powered link shortener. The default setting for these extensions are the\r\nabovementioned. Extensions for Yesbot are very simple. They are basically Prolog predicates with\r\nthe same name as their containing modules. All Yesbot extensions are required to have an arity of 1.\r\nExtensions should all take in one argument: a pair containing the Id of the connection and the\r\ncurrent server line. The pair should be of the form `Id-Msg`. The main extension predicate should\r\nhave the same name as the Prolog module itself (sans the `.pl` portion). The demo extension source\r\ncode is located in the extensions directory. A warning: The majority of the extensions that come\r\nwith this bot were designed for ##prolog usage. While they can be catered to work generically, they\r\nmay require tinkering to get them to work for your use cases.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feazar001%2Fyesbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feazar001%2Fyesbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feazar001%2Fyesbot/lists"}