move to using config.py parser stuff
This commit is contained in:
parent
195e9015a8
commit
570dba09a6
|
@ -58,9 +58,5 @@ docs/_build/
|
||||||
# PyBuilder
|
# PyBuilder
|
||||||
target/
|
target/
|
||||||
|
|
||||||
tildeclub.json
|
|
||||||
tildeteam.json
|
|
||||||
tildeverse.json
|
|
||||||
config.json
|
|
||||||
venv/
|
venv/
|
||||||
account.json
|
config.yaml
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"username": "bensbots",
|
|
||||||
"password": "my super secret password"
|
|
||||||
}
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
server: localhost:6667
|
||||||
|
nickname: tooter
|
||||||
|
channel: "#meta"
|
||||||
|
|
||||||
|
sasl:
|
||||||
|
username: cloaks
|
||||||
|
password: hunter3
|
||||||
|
|
||||||
|
mastodon:
|
||||||
|
- name: tildeverse
|
||||||
|
client_id: 1234566
|
||||||
|
client_secret: beeeep
|
||||||
|
access_token: you do not want to know
|
||||||
|
base_url: https://tilde.zone
|
||||||
|
channels:
|
||||||
|
- '#club'
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
"channels": [],
|
|
||||||
"address": "127.0.0.1",
|
|
||||||
"port": 6667,
|
|
||||||
"tls": false,
|
|
||||||
"botnick": "tooter"
|
|
||||||
}
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from os.path import expanduser
|
||||||
|
from re import compile as re_compile
|
||||||
|
from typing import List, Pattern, Tuple
|
||||||
|
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Config(object):
|
||||||
|
server: Tuple[str, int, bool]
|
||||||
|
nickname: str
|
||||||
|
username: str
|
||||||
|
realname: str
|
||||||
|
password: str
|
||||||
|
channel: str
|
||||||
|
|
||||||
|
sasl: Tuple[str, str]
|
||||||
|
|
||||||
|
def load(filepath: str):
|
||||||
|
with open(filepath) as file:
|
||||||
|
config_yaml = yaml.safe_load(file.read())
|
||||||
|
|
||||||
|
nickname = config_yaml["nickname"]
|
||||||
|
|
||||||
|
server = config_yaml["server"]
|
||||||
|
hostname, port_s = server.split(":", 1)
|
||||||
|
tls = False
|
||||||
|
|
||||||
|
if port_s.startswith("+"):
|
||||||
|
tls = True
|
||||||
|
port_s = port_s.lstrip("+")
|
||||||
|
port = int(port_s)
|
||||||
|
|
||||||
|
return Config(
|
||||||
|
(hostname, port, tls),
|
||||||
|
nickname,
|
||||||
|
config_yaml.get("username", nickname),
|
||||||
|
config_yaml.get("realname", nickname),
|
||||||
|
config_yaml["password"],
|
||||||
|
config_yaml["channel"],
|
||||||
|
(config_yaml["sasl"]["username"], config_yaml["sasl"]["password"]),
|
||||||
|
)
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
"client_id": "myclientid",
|
|
||||||
"client_secret": "myclientsecret",
|
|
||||||
"access_token": "myaccesstoken",
|
|
||||||
"base_url": "https://tilde.zone",
|
|
||||||
"channel": "remove this key if you don't want to limit the bot"
|
|
||||||
}
|
|
24
tooter.py
24
tooter.py
|
@ -1,10 +1,11 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
from mastodon import Mastodon
|
from .config import Config
|
||||||
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 ConnectionParams, SASLUserPass
|
from ircrobots import ConnectionParams, SASLUserPass
|
||||||
|
from ircrobots import Server as BaseServer
|
||||||
|
from irctokens import build, Line
|
||||||
|
from mastodon import Mastodon
|
||||||
import asyncio
|
import asyncio
|
||||||
import emoji
|
import emoji
|
||||||
import glob
|
import glob
|
||||||
|
@ -68,6 +69,14 @@ def think(line):
|
||||||
|
|
||||||
|
|
||||||
class Server(BaseServer):
|
class Server(BaseServer):
|
||||||
|
def __init__(self,
|
||||||
|
bot: BaseBot,
|
||||||
|
name: str,
|
||||||
|
config: Config):
|
||||||
|
|
||||||
|
super().__init__(bot, name)
|
||||||
|
self._config = config
|
||||||
|
|
||||||
async def line_send(self, line: Line):
|
async def line_send(self, line: Line):
|
||||||
print(f"{self.name} > {line.format()}")
|
print(f"{self.name} > {line.format()}")
|
||||||
|
|
||||||
|
@ -102,12 +111,13 @@ class Bot(BaseBot):
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
params = ConnectionParams(
|
params = ConnectionParams(
|
||||||
config["botnick"],
|
config.get("botnick", "tooter"),
|
||||||
host=config["address"],
|
config.get("address", "127.0.0.1"),
|
||||||
port=config["port"],
|
config.get("port", 6667),
|
||||||
tls=config["tls"],
|
config.get("tls", False),
|
||||||
sasl=SASLUserPass(account["username"], account["password"]),
|
sasl=SASLUserPass(account["username"], account["password"]),
|
||||||
)
|
)
|
||||||
|
|
||||||
bot = Bot()
|
bot = Bot()
|
||||||
await bot.add_server("tilde", params)
|
await bot.add_server("tilde", params)
|
||||||
await bot.run()
|
await bot.run()
|
||||||
|
|
Loading…
Reference in New Issue