update dependencies

main
Yorick van Pelt 2024-04-27 10:20:30 +02:00
parent c2aceb9a19
commit 04ceff8a29
Signed by: yorick
GPG Key ID: D8D3CC6D951384DE
5 changed files with 179 additions and 235 deletions

View File

@ -1,36 +1,17 @@
{
"nodes": {
"devshell": {
"flake": false,
"locked": {
"lastModified": 1663445644,
"narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=",
"owner": "numtide",
"repo": "devshell",
"rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"dream2nix": {
"inputs": {
"devshell": "devshell",
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"nix-unit": "nix-unit",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": "pre-commit-hooks"
"purescript-overlay": "purescript-overlay",
"pyproject-nix": "pyproject-nix"
},
"locked": {
"lastModified": 1697648072,
"narHash": "sha256-sLvhdql0u/GJkG4SZOagWCfEQSh5y7Uy9ZhVtAveo9o=",
"lastModified": 1714156336,
"narHash": "sha256-9vk0C+CkPHUzbrrsuqERMwKTodPpUnNFieeoS06ywak=",
"owner": "nix-community",
"repo": "dream2nix",
"rev": "0c6910060f49efe0ce645ebec8e2fc64ba16eb3c",
"rev": "7979674299c631520a5c0fe73551cd3d8580d1b4",
"type": "github"
},
"original": {
@ -39,71 +20,16 @@
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1673956053,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"dream2nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1675933616,
"narHash": "sha256-/rczJkJHtx16IFxMmAWu5nNYcSXNg1YYXTHoGjLrLUA=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "47478a4a003e745402acf63be7f9a092d51b83d7",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1689068808,
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
@ -111,102 +37,93 @@
"type": "indirect"
}
},
"nix-github-actions": {
"inputs": {
"nixpkgs": [
"dream2nix",
"nix-unit",
"nixpkgs"
]
},
"locked": {
"lastModified": 1688870561,
"narHash": "sha256-4UYkifnPEw1nAzqqPOTL2MvWtm3sNGw1UTYTalkTcGY=",
"owner": "nix-community",
"repo": "nix-github-actions",
"rev": "165b1650b753316aa7f1787f3005a8d2da0f5301",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-github-actions",
"type": "github"
}
},
"nix-unit": {
"inputs": {
"flake-parts": [
"dream2nix",
"flake-parts"
],
"nix-github-actions": "nix-github-actions",
"nixpkgs": [
"dream2nix",
"nixpkgs"
],
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1694670962,
"narHash": "sha256-HvMq0TJGYSx37zHm4j2d+JUZx4/6X7xKEt/0DeCiwjQ=",
"owner": "adisbladis",
"repo": "nix-unit",
"rev": "3ed2378bddad85257fc508a291408f9ed9673d01",
"type": "github"
},
"original": {
"owner": "adisbladis",
"repo": "nix-unit",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1696604326,
"narHash": "sha256-YXUNI0kLEcI5g8lqGMb0nh67fY9f2YoJsILafh6zlMo=",
"lastModified": 1714091391,
"narHash": "sha256-68n3GBvlm1MIeJXadPzQ3v8Y9sIW3zmv8gI5w5sliC8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "87828a0e03d1418e848d3dd3f3014a632e4a4f64",
"rev": "4c86138ce486d601d956a165e2f7a0fc029a03c1",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-unstable",
"type": "indirect"
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit-hooks": {
"purescript-overlay": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"dream2nix",
"nixpkgs"
]
],
"slimlock": "slimlock"
},
"locked": {
"lastModified": 1646153636,
"narHash": "sha256-AlWHMzK+xJ1mG267FdT8dCq/HvLCA6jwmx2ZUy5O8tY=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "b6bc0b21e1617e2b07d8205e7fae7224036dfa4b",
"lastModified": 1696022621,
"narHash": "sha256-eMjFmsj2G1E0Q5XiibUNgFjTiSz0GxIeSSzzVdoN730=",
"owner": "thomashoneyman",
"repo": "purescript-overlay",
"rev": "047c7933abd6da8aa239904422e22d190ce55ead",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"owner": "thomashoneyman",
"repo": "purescript-overlay",
"type": "github"
}
},
"pyproject-nix": {
"flake": false,
"locked": {
"lastModified": 1702448246,
"narHash": "sha256-hFg5s/hoJFv7tDpiGvEvXP0UfFvFEDgTdyHIjDVHu1I=",
"owner": "davhau",
"repo": "pyproject.nix",
"rev": "5a06a2697b228c04dd2f35659b4b659ca74f7aeb",
"type": "github"
},
"original": {
"owner": "davhau",
"ref": "dream2nix",
"repo": "pyproject.nix",
"type": "github"
}
},
"root": {
"inputs": {
"dream2nix": "dream2nix",
"flake-utils": "flake-utils_2",
"flake-utils": "flake-utils",
"nixpkgs": [
"dream2nix",
"nixpkgs"
]
}
},
"slimlock": {
"inputs": {
"nixpkgs": [
"dream2nix",
"purescript-overlay",
"nixpkgs"
]
},
"locked": {
"lastModified": 1688610262,
"narHash": "sha256-Wg0ViDotFWGWqKIQzyYCgayeH8s4U1OZcTiWTQYdAp4=",
"owner": "thomashoneyman",
"repo": "slimlock",
"rev": "b5c6cdcaf636ebbebd0a1f32520929394493f1a6",
"type": "github"
},
"original": {
"owner": "thomashoneyman",
"repo": "slimlock",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
@ -221,43 +138,6 @@
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"dream2nix",
"nix-unit",
"nixpkgs"
]
},
"locked": {
"lastModified": 1689620039,
"narHash": "sha256-BtNwghr05z7k5YMdq+6nbue+nEalvDepuA7qdQMAKoQ=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "719c2977f958c41fa60a928e2fbc50af14844114",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
}
},
"root": "root",

View File

@ -2,10 +2,10 @@
"fetchPipMetadata": {
"sources": {
"aioconsole": {
"sha256": "1968021eb03b88fcdf5f5398154b21585e941a7b98c9fcef51c4bb0158156619",
"sha256": "ee799435f77e8c3a2a7207c465feae2343a2aa537c38e8f56b629c8a321a02d0",
"type": "url",
"url": "https://files.pythonhosted.org/packages/71/f2/961b67bbe07661d24cfbe3497ba7d5a1c372a50e35d5d05abcefd3057d60/aioconsole-0.6.2-py3-none-any.whl",
"version": "0.6.2"
"url": "https://files.pythonhosted.org/packages/f7/39/b392dc1a8bb58342deacc1ed2b00edf88fd357e6fdf76cc6c8046825f84f/aioconsole-0.7.0-py3-none-any.whl",
"version": "0.7.0"
},
"anyio": {
"sha256": "01cce0087b8fd8b6b7e629dc11505dcde02f916ce903332892cb2ae9817b597d",
@ -38,10 +38,10 @@
"version": "1.0.2"
},
"beautifulsoup4": {
"sha256": "bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a",
"sha256": "b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed",
"type": "url",
"url": "https://files.pythonhosted.org/packages/57/f4/a69c20ee4f660081a7dedb1ac57f29be9378e04edfcb90c526b923d4bebc/beautifulsoup4-4.12.2-py3-none-any.whl",
"version": "4.12.2"
"url": "https://files.pythonhosted.org/packages/b1/fe/e8c672695b37eecc5cbf43e1d0638d88d66ba3a44c4d321c796f4e59167f/beautifulsoup4-4.12.3-py3-none-any.whl",
"version": "4.12.3"
},
"brotlicffi": {
"sha256": "9feb210d932ffe7798ee62e6145d3a757eb6233aa9a4e7db78dd3690d7755814",
@ -50,10 +50,10 @@
"version": "1.1.0.0"
},
"certifi": {
"sha256": "92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9",
"sha256": "dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1",
"type": "url",
"url": "https://files.pythonhosted.org/packages/4c/dd/2234eab22353ffc7d94e8d13177aaa050113286e93e7b40eae01fbf7c3d9/certifi-2023.7.22-py3-none-any.whl",
"version": "2023.7.22"
"url": "https://files.pythonhosted.org/packages/ba/06/a07f096c664aeb9f01624f858c3add0a4e913d6c96257acb4fce61e7de14/certifi-2024.2.2-py3-none-any.whl",
"version": "2024.2.2"
},
"cffi": {
"sha256": "7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e",
@ -62,10 +62,10 @@
"version": "1.16.0"
},
"charset-normalizer": {
"sha256": "f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293",
"sha256": "753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8",
"type": "url",
"url": "https://files.pythonhosted.org/packages/ff/b6/9222090f396f33cd58aa5b08b9bbf8871416b746a0c7b412a41a973674a5/charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"version": "3.3.0"
"url": "https://files.pythonhosted.org/packages/40/26/f35951c45070edc957ba40a5b1db3cf60a9dbb1b350c2d5bef03e01e61de/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"version": "3.3.2"
},
"h11": {
"sha256": "36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6",
@ -86,10 +86,10 @@
"version": "0.20.0"
},
"idna": {
"sha256": "90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2",
"sha256": "82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0",
"type": "url",
"url": "https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl",
"version": "3.4"
"url": "https://files.pythonhosted.org/packages/e5/3e/741d8c82801c347547f8a2a06aa57dbb1992be9e948df2ea0eda2c8b79e8/idna-3.7-py3-none-any.whl",
"version": "3.7"
},
"ircrobots": {
"sha256": "f12b484cf5d6a55396f0ba76f8f243f4beb6066684a0afb2098c1e3730a25083",
@ -110,34 +110,34 @@
"version": "2.0.2"
},
"linkify-it-py": {
"sha256": "a3a24428f6c96f27370d7fe61d2ac0be09017be5190d68d8658233171f1b6541",
"sha256": "6bcbc417b0ac14323382aef5c5192c0075bf8a9d6b41820a2b66371eac6b6d79",
"type": "url",
"url": "https://files.pythonhosted.org/packages/1f/1a/16b0d2f66601ba3081f1d4177087c79fd1f11d17706ee01d373e4ba8e00d/linkify_it_py-2.0.2-py3-none-any.whl",
"version": "2.0.2"
"url": "https://files.pythonhosted.org/packages/04/1e/b832de447dee8b582cac175871d2f6c3d5077cc56d5575cadba1fd1cccfa/linkify_it_py-2.0.3-py3-none-any.whl",
"version": "2.0.3"
},
"pendulum": {
"sha256": "d97739a7a5d5fc64e98bab46b292ac9f15aee88b5d3851cd6037d011a7b18af0",
"sha256": "b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207",
"type": "url",
"url": "https://files.pythonhosted.org/packages/9a/0d/e503011d347e2d41f4fb05c6b3d7fbfcc8b2c25baba13e1804597e7d2412/pendulum-2.1.1.tar.gz",
"version": "2.1.1"
"url": "https://files.pythonhosted.org/packages/db/15/6e89ae7cde7907118769ed3d2481566d05b5fd362724025198bb95faf599/pendulum-2.1.2.tar.gz",
"version": "2.1.2"
},
"pillow": {
"sha256": "a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061",
"sha256": "1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd",
"type": "url",
"url": "https://files.pythonhosted.org/packages/6f/d8/f31dd84b4363b5f24c71b25a13ec3855f5ff233e07e1c3f1f8e979e12be2/Pillow-10.1.0-cp311-cp311-manylinux_2_28_x86_64.whl",
"version": "10.1.0"
"url": "https://files.pythonhosted.org/packages/81/ff/ad3c942d865f9e45ce84eeb31795e6d4d94e1f1eea51026d5154028510d7/pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl",
"version": "10.3.0"
},
"pycparser": {
"sha256": "8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9",
"sha256": "c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc",
"type": "url",
"url": "https://files.pythonhosted.org/packages/62/d5/5f610ebe421e85889f2e55e33b7f9a6795bd982198517d912eb1c76e1a53/pycparser-2.21-py2.py3-none-any.whl",
"version": "2.21"
"url": "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl",
"version": "2.22"
},
"python-dateutil": {
"sha256": "961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9",
"sha256": "a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427",
"type": "url",
"url": "https://files.pythonhosted.org/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl",
"version": "2.8.2"
"url": "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl",
"version": "2.9.0.post0"
},
"pytzdata": {
"sha256": "e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f",
@ -158,10 +158,10 @@
"version": "1.16.0"
},
"sniffio": {
"sha256": "eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384",
"sha256": "2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2",
"type": "url",
"url": "https://files.pythonhosted.org/packages/c3/a0/5dba8ed157b0136607c7f2151db695885606968d1fae123dc3391e0cfdbf/sniffio-1.3.0-py3-none-any.whl",
"version": "1.3.0"
"url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl",
"version": "1.3.1"
},
"soupsieve": {
"sha256": "eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7",
@ -170,10 +170,10 @@
"version": "2.5"
},
"uc-micro-py": {
"sha256": "8c9110c309db9d9e87302e2f4ad2c3152770930d88ab385cd544e7a7e75f3de0",
"sha256": "db1dffff340817673d7b466ec86114a9dc0e9d4d9b5ba229d9d60e5c12600cd5",
"type": "url",
"url": "https://files.pythonhosted.org/packages/d1/1c/5aeb94aa980da111e4fd0c0fbe5ad95ed5bf9bd957f8e2a6178b85ff4da8/uc_micro_py-1.0.2-py3-none-any.whl",
"version": "1.0.2"
"url": "https://files.pythonhosted.org/packages/37/87/1f677586e8ac487e29672e4b17455758fce261de06a0d086167bb760361a/uc_micro_py-1.0.3-py3-none-any.whl",
"version": "1.0.3"
}
},
"targets": {
@ -237,9 +237,7 @@
"six"
],
"pytzdata": [],
"rfc3986": [
"idna"
],
"rfc3986": [],
"six": [],
"sniffio": [],
"soupsieve": [],
@ -247,5 +245,5 @@
}
}
},
"invalidationHash": "c2feb709d9c52e7d3ffb577ce364d258dde6b5e6677971c51bcdf6c256f1054e"
"invalidationHash": "bbf821ce22e1c8febca59ab4ef31cf70e1a1e33a7e127e75fccfe105640ecbe1"
}

View File

@ -1,5 +1,8 @@
{ dream2nix, conf, lib, ... }:
{ dream2nix, config, lib, ... }:
{
imports = [ dream2nix.modules.dream2nix.WIP-python-pyproject ];
mkDerivation.src = ./.;
pip.overrides.pendulum.mkDerivation.nativeBuildInputs = [
config.deps.python.pkgs.poetry-core
];
}

View File

@ -4,15 +4,37 @@ version = "0.1.0"
description = ""
#authors = ["Yorick van Pelt <yorick@yorickvanpelt.nl>"]
readme = "README.md"
# frozen from ircrobots==0.6.6, aioconsole, httpx==0.20.0, httpcore[asyncio], Pillow, beautifulsoup4, linkify_it_py, brotlicffi
dependencies = [
"aioconsole",
"brotlicffi",
"httpx",
"aioconsole==0.7.0",
"anyio==2.0.2",
"async-stagger==0.3.1",
"async-timeout==4.0.3",
"asyncio-rlock==0.1.0",
"asyncio-throttle==1.0.2",
"beautifulsoup4==4.12.3",
"brotlicffi==1.1.0.0",
"certifi==2024.2.2",
"cffi==1.16.0",
"charset-normalizer==3.3.2",
"h11==0.12.0",
"httpcore==0.13.3",
"httpx==0.20.0",
"idna==3.7",
"ircrobots==0.6.6",
"Pillow",
"beautifulsoup4",
"pendulum==2.1.1",
"linkify_it_py"
"ircstates==0.12.1",
"irctokens==2.0.2",
"linkify-it-py==2.0.3",
"pendulum==2.1.2",
"pillow==10.3.0",
"pycparser==2.22",
"python-dateutil==2.9.0.post0",
"pytzdata==2020.1",
"rfc3986==1.5.0",
"six==1.16.0",
"sniffio==1.3.1",
"soupsieve==2.5",
"uc-micro-py==1.0.3",
]
[project.entry-points.console_scripts]
@ -25,6 +47,13 @@ include = [
]
[tool.ruff]
select = ["E", "F", "B", "EXE", "PTH", "COM", "ANN", "SIM", "Q", "ARG", "RET", "W", "PERF", "BLE"]
ignore = ["ANN101", "E501"]
target-version = "py311"
[tool.ruff.lint]
select = ["E", "F", "B", "EXE", "PTH", "COM", "ANN", "SIM", "Q", "ARG", "RET", "W", "PERF", "BLE", "TRY", "SIM"]
ignore = ["ANN101", "E501", "D", "TRY003", "COM812"]
[tool.pyright]
pythonVersion = "3.11"
reportMissingImports = true
ignore = [ "result/" ]

34
yobot/yobot.py Normal file
View File

@ -0,0 +1,34 @@
from .interface import IPlugin, IServer, ILine
from pathlib import Path
from importlib import import_module
import tomllib
class Yobot:
def __init__(self, config_path: str) -> None:
with Path(config_path).open("rb") as f:
self.config = tomllib.load(f)
# todo: casefold config
plugin_names: set[str] = set()
for net in self.config["irc"].values():
for chan in net["channels"].values():
plugin_names.update(chan["plugins"])
plugin_names.update(self.config["repl"]["plugins"])
self.plugins: dict[str, IPlugin] = {
plugin_name: import_module(f"yobot.plugins.{plugin_name}").Plugin(self.config[plugin_name])
for plugin_name in plugin_names
}
async def handle_irc(self, bot: IServer, network: str, channel: str, line: ILine) -> None:
conf = self.config["irc"][network]
if channel in conf["channels"]:
channel_conf = conf["channels"][channel]
for plugin in channel_conf["plugins"]:
await self.plugins[plugin].handle(bot, line)
async def handle_repl(self, bot: IServer, line: ILine) -> None:
channel_conf = self.config["repl"]
for plugin in channel_conf["plugins"]:
await self.plugins[plugin].handle(bot, line)