fix sed index stuff, make host/nick/chan argparse args
This commit is contained in:
parent
a51f389b91
commit
2d67587938
1 changed files with 25 additions and 11 deletions
|
@ -1,8 +1,10 @@
|
||||||
import asyncio, re
|
import asyncio, re
|
||||||
|
from argparse import ArgumentParser
|
||||||
from typing import Dict, List, Optional
|
from typing import Dict, List, Optional
|
||||||
|
|
||||||
from irctokens import build, Line
|
from irctokens import build, Line
|
||||||
from ircrobots import Bot as BaseBot
|
from ircrobots import Bot as BaseBot
|
||||||
from ircrobots import Server as BaseServer
|
from ircrobots import Server as BaseServer
|
||||||
from ircrobots import ConnectionParams
|
from ircrobots import ConnectionParams
|
||||||
|
|
||||||
TRIGGER = "!"
|
TRIGGER = "!"
|
||||||
|
@ -27,8 +29,10 @@ def _sed(sed: str, s: str) -> Optional[str]:
|
||||||
last = i+1
|
last = i+1
|
||||||
if len(parts) == 4:
|
if len(parts) == 4:
|
||||||
break
|
break
|
||||||
|
if last < (len(sed)):
|
||||||
|
parts.append(sed[last:])
|
||||||
|
|
||||||
pattern, replace, *args = parts
|
_, pattern, replace, *args = parts
|
||||||
flags_s = (args or [""])[0]
|
flags_s = (args or [""])[0]
|
||||||
|
|
||||||
flags = re.I if "i" in flags_s else 0
|
flags = re.I if "i" in flags_s else 0
|
||||||
|
@ -58,8 +62,9 @@ class Database:
|
||||||
del self._settings[setting]
|
del self._settings[setting]
|
||||||
|
|
||||||
class Server(BaseServer):
|
class Server(BaseServer):
|
||||||
def __init__(self, name: str, database: Database):
|
def __init__(self, name: str, channel: str, database: Database):
|
||||||
super().__init__(name)
|
super().__init__(name)
|
||||||
|
self._channel = channel
|
||||||
self._database = database
|
self._database = database
|
||||||
|
|
||||||
async def line_send(self, line: Line):
|
async def line_send(self, line: Line):
|
||||||
|
@ -70,7 +75,7 @@ class Server(BaseServer):
|
||||||
|
|
||||||
me = self.nickname_lower
|
me = self.nickname_lower
|
||||||
if line.command == "001":
|
if line.command == "001":
|
||||||
await self.send(build("JOIN", ["##robots"]))
|
await self.send(build("JOIN", [self._channel]))
|
||||||
|
|
||||||
if (
|
if (
|
||||||
line.command == "PRIVMSG" and
|
line.command == "PRIVMSG" and
|
||||||
|
@ -137,19 +142,28 @@ class Server(BaseServer):
|
||||||
await self.send(build("PRIVMSG", [line.params[0], out]))
|
await self.send(build("PRIVMSG", [line.params[0], out]))
|
||||||
|
|
||||||
class Bot(BaseBot):
|
class Bot(BaseBot):
|
||||||
|
def __init__(self, channel: str):
|
||||||
|
super().__init__()
|
||||||
|
self._channel = channel
|
||||||
def create_server(self, name: str):
|
def create_server(self, name: str):
|
||||||
return Server(name, Database())
|
return Server(name, self._channel, Database())
|
||||||
|
|
||||||
async def main():
|
async def main(hostname: str, channel: str, nickname: str):
|
||||||
bot = Bot()
|
bot = Bot(channel)
|
||||||
|
|
||||||
params = ConnectionParams(
|
params = ConnectionParams(
|
||||||
"robot",
|
nickname,
|
||||||
"chat.freenode.invalid",
|
hostname,
|
||||||
6697,
|
6697,
|
||||||
tls=True)
|
tls=True)
|
||||||
await bot.add_server("freenode", params)
|
await bot.add_server("freenode", params)
|
||||||
await bot.run()
|
await bot.run()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
asyncio.run(main())
|
parser = ArgumentParser(description="A simple IRC bot for factoids")
|
||||||
|
parser.add_argument("hostname")
|
||||||
|
parser.add_argument("channel")
|
||||||
|
parser.add_argument("nickname")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
asyncio.run(main(args.hostname, args.channel, args.nickname))
|
||||||
|
|
Loading…
Add table
Reference in a new issue