Files
omnibot22/tools/markov_import.py
Alek Ratzloff 6a1ed5c372 Add random reply chance to markov bot
Whenever someone says something, there's a chance that markov will
interject his opinion. Users can also set the chance between 0.0 and the
default value (in the config) if they want to see markov replies less
often.

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
2022-05-30 14:29:37 -07:00

49 lines
1.3 KiB
Python

import logging
import asyncio
import sys
import re
from omnibot.config import ServerConfig
from plugins.markov import Markov
async def main():
"""
Hacky "load my IRC logs" script
"""
# TODO - add config path selection
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s - %(name)-12s - %(levelname)-8s - %(message)s",
)
log = logging.getLogger(__name__)
channel = sys.argv[1]
files = sys.argv[2:]
server_config = ServerConfig()
server_config.load("config.toml")
# This only works on one plugin per config
plugin_config = [
plugin for plugin in server_config.plugins if "markov" in plugin["module"]
][0]
plugin = Markov(server_config, plugin_config)
LINE_RE = re.compile(r"^\[[^\]]+\] <(?P<name>[^>]+)> (?P<message>.+)$")
for fname in files:
log.info("Loading %s", fname)
with open(fname) as fp:
lines = list(fp)
for line in lines:
if mat := LINE_RE.search(line):
name = mat["name"]
message = mat["message"].strip()
if name != server_config.nick and message and message[0] != "!":
plugin.add(channel, name, message)
await plugin.save()
if __name__ == "__main__":
asyncio.run(main())