diff --git a/bare.py b/bare.py index c48c599..3f9b65d 100644 --- a/bare.py +++ b/bare.py @@ -3,6 +3,7 @@ from socket import socket from overrides import bytes, bbytes from typing import NoReturn, Union from pylast import LastFMNetwork +from markov import MarkovBot logs = ... re = ... @@ -39,6 +40,7 @@ class bot: onIdntCmds: list[str] onJoinCmds: list[str] onStrtCmds: list[str] + markov: MarkovBot def __init__(self, server: str): ... diff --git a/bot.py b/bot.py index f65767c..efc781d 100644 --- a/bot.py +++ b/bot.py @@ -13,6 +13,7 @@ import random as r import handlers import bare from threading import Thread +from markov import MarkovBot def mfind(message: str, find: list, usePrefix: bool = True) -> bool: @@ -72,6 +73,11 @@ class bot(bare.bot): else [] ) self.lastfmLink = conf.lastfmLink + with open("mastermessages.txt") as f: + TMFeed = [] + for line in f.readlines(): + TMFeed.extend([line.strip().split()]) + self.markov = MarkovBot(TMFeed) self.log(f"Start init for {self.server}") def connect(self) -> None: diff --git a/commands.py b/commands.py index ac60326..ecdf1dd 100644 --- a/commands.py +++ b/commands.py @@ -112,7 +112,11 @@ def quote(bot: bare.bot, chan: str, name: str, message: str) -> None: ) # pyright: ignore [reportInvalidStringEscapeSequence] r.seed() with open("mastermessages.txt", "r") as mm: - q = list(filter(lambda x: re.search(qfilter, x), mm.readlines())) + q =[] + try: + q = list(filter(lambda x: re.search(qfilter, x), mm.readlines())) + except re.error: + q = ['Sorry, your query is invalid regex. Please try again.'] if q == []: q = [f'No results for "{query}" '] sel = conf.decode_escapes( @@ -199,6 +203,15 @@ def whoami(bot: bare.bot, chan: str, name: str, message: str) -> None: ) +def markov(bot: bare.bot, chan: str, name: str, message: str) -> None: + word = None + if " " in message: + word = message.split()[1] + proposed = bot.markov.generate_text(word) + if proposed == word: + proposed = f"Chain failed. (Firepup has never been recorded saying \"{word}\")" + bot.msg(proposed, chan) + data: dict[str, dict[str, Any]] = { "!botlist": {"prefix": False, "aliases": []}, "bugs bugs bugs": {"prefix": False, "aliases": []}, @@ -229,6 +242,7 @@ data: dict[str, dict[str, Any]] = { "fpmp": {"prefix": True, "aliases": []}, "version": {"prefix": True, "aliases": ["ver", "v"]}, "np": {"prefix": True, "aliases": []}, + "markov": {"prefix": True, "aliases": ["m"]} } regexes: list[str] = [conf.npbase, conf.su] call: dict[str, Callable[[bare.bot, str, str, str], None]] = { @@ -254,4 +268,5 @@ call: dict[str, Callable[[bare.bot, str, str, str], None]] = { "fpmp": fpmp, "version": version, "np": fmpull, + "markov": markov, } diff --git a/config.py b/config.py index 4ca70f7..51a2e5f 100644 --- a/config.py +++ b/config.py @@ -6,7 +6,7 @@ from typing import Optional, Any import bare, pylast load_dotenv() -__version__ = "v3.0.11" +__version__ = "v3.0.12" npbase: str = ( "\[\x0303last\.fm\x03\] [A-Za-z0-9_[\]{}\\|\-^]{1,$MAX} (is listening|last listened) to: \x02.+ - .*\x02( \([0-9]+ plays\)( \[.*\])?)?" # pyright: ignore [reportInvalidStringEscapeSequence] ) diff --git a/mastermessages.txt b/mastermessages.txt index f2c8274..f0084de 100644 --- a/mastermessages.txt +++ b/mastermessages.txt @@ -4678,18 +4678,6 @@ lmao s/wont/will/ lmao thinks -22:32:44 <@Guest6132> 9pfs it was nice knowing you -22:32:54 <@Guest6132> i know this will be your last moment on earth -22:32:59 <@Guest6132> as you're going to freeze to death -22:33:01 <@Guest6132> in a pool -22:33:03 <@Guest6132> in october -22:33:07 <@h|tl> Guest6132: ✨ swimming pools inside buildings ✨ -22:33:35 <@Guest6132> still october -22:33:38 <@Guest6132> it's illegal -22:33:52 <@Guest6132> i wont pay your bail -22:34:05 <@firepup|lounge> s/wont/will/ -22:34:05 <+FireBitBot> [Sed] i will pay your bail -22:34:21 *** @PurryCat2022 (Meow@127.0.0.1) has quit (Killed (h|tl (The bail price just went up from me committing murder))) Quote block >bef Nuh uh @@ -5220,17 +5208,10 @@ Fun fact It can't read what the bit bots say most of the time idk, it just reads it as "blob data" >help -Oct 15 22:24:56 firepi python3[312286]: [LOG] Got ">help" from "firepup|lounge" in "#main" -Oct 15 22:24:56 firepi python3[312286]: [211B blob data] -Oct 15 22:24:56 firepi python3[312286]: [206B blob data] It's just blob >echo >echo ‌ -Oct 15 22:26:26 firepi python3[312286]: :firepup|lounge!thelounge@owner.firepi PRIVMSG #main :>echo ‌ -Oct 15 22:26:26 firepi python3[312286]: [LOG] Got ">echo ‌" from "firepup|lounge" in "#main" -Oct 15 22:26:26 firepi python3[312286]: [62B blob data] -Oct 15 22:26:26 firepi python3[312286]: [57B blob data] :> idk why it just sees blob data but it does @@ -5317,10 +5298,6 @@ lmao, probably Oh also the only reason I knew it joined #random after leaving #main was from my bot'slogs s/slogs/s logs -Oct 15 23:32:20 firepi python3[325579]: :_9pfs-bitbot!h-bitbot@127.0.0.1 QUIT :Remote host closed the connection -Oct 15 23:32:30 firepi python3[325579]: :_9pfs-bitbot!h-bitbot@127.0.0.1 JOIN #random -Oct 15 23:32:59 firepi python3[325579]: :firepup|lounge!thelounge@owner.firepi PRIVMSG #main :??? -Oct 15 23:32:59 firepi python3[325579]: [LOG] Got "???" from "firepup|lounge" in "#main" h|tl: Probably Though LAN shouldn't happen h|tl: You ask questions and don't respond when I ask bacl 🙃 @@ -5917,9 +5894,6 @@ s/\|lounge// h|tl: Really? On Replit or no? f.isup tilde Lmao -12:58:37 [015] ** aPhone.local (recently split) -12:58:37 [015] ** pylink.hellirc.repl.co (recently split) -12:58:37 [015] ** ReplSearch.repl.co (recently split) False notes the util got viewed > 13:02:56 <@h|tl> firepup: Could you explain why that exists? @@ -6295,26 +6269,15 @@ f.pnp Ugh R f.pnp -:FireBitBot!bitbot@bitbot.firepi PRIVMSG #main :[03last.fm] Firepup650 is listening to: Tryhardninja - It's Me (142 plays) [FNAF] +:FireBitBot!bitbot@bitbot.firepi PRIVMSG #main : Hmm -[03last.fm] Firepup650 is listening to: Tryhardninja - It's Me (142 plays) [FNAF] -[03last] Firepup650 is listening to: Tryhardninja - It's Me (142 plays) [FNAF] -[04last.fm] Firepup650 is listening to: Tryhardninja - It's Me (142 plays) [FNAF] -[03last.fm] Firepup650 is listening to: Tryhardninja - It's Me (142 plays) [FNAF] 10Cyan Cool -[03last.fm] Firepup650 is listening to: Tryhardninja - It's Me (142 plays) [FNAF] I need to make recognize that string e -[03last.fm] Firepup650 is listening to: Tryhardninja - It's Me (142 plays) [FNAF] ... -[03last.fm] Firepup650 is listening to: Tryhardninja - It's Me (142 plays) [FNAF] Ugh -[03last.fm] Firepup650 is listening to: Tryhardninja - It's Me (142 plays) [FNAF] Wait. -[03last.fm] Firepup650 is listening to: Tryhardninja - It's Me (142 plays) -[03last.fm] Firepup650 is listening to: Tryhardninja - It's Me (142 plays) -[03last.fm] Firepup650 is listening to: Tryhardninja - It's Me (142 plays) [FNAF] FINALLY f.pnp f.pnp @@ -6325,8 +6288,6 @@ f.pnp f.pnp Cool I'm glad that works -[03last.fm] Firepup650 is listening to: Tryhardninja - It's Me (142 plays) [FNAF] -[03last.fm] Firepup650 is listening to: Lolbit Gaming - Please Stand By (177 plays) lmao Very incorrect f.pnp @@ -6896,9 +6857,6 @@ goes to figure out which one it is I'd just jupe replirc.devarsh.me right? lmao -22:06:58 -irc.firepi.amcforum.wiki- *** Notice -- ssld error for replirc.devarsh.me: Read error: Connection reset by peer -22:06:58 -irc.firepi.amcforum.wiki- *** Notice -- Netsplit irc.firepi.amcforum.wiki <-> replirc.devarsh.me (1S 1C) (Read error: Connection reset by peer) -22:06:58 -irc.firepi.amcforum.wiki- *** Notice -- replirc.devarsh.me was connected for 148791 seconds. 5081/71 sendK/recvK. NeoRoll: What did you do? lmao You just delinked yourself from the main net lmao @@ -7613,8 +7571,6 @@ Don't spam just to get a duck And also no way that was actually you sub 1 sec response -20:38:12 <@FireBitBot> ・゜゜・。。・゜゜\_o< QUACK! -20:38:12 <@NeoRoll> f.bef Within 1sec Probability without script is low, and you've used one before. Poke it @@ -7839,7 +7795,6 @@ I expected purry to fight that Just set +M on a bunch of channels f.np ... - f.np firepup blinks makes replirc.i2p load operpeace @@ -7887,18 +7842,6 @@ Fluff. Internet seems to be out h|tl My Wi-Fi seems down At least partially -13:43:35 Ping timeout, disconnecting… -13:43:35 Disconnected from the network. Reconnecting in 5 seconds… (Attempt 1) -13:43:50 *** Connection closed unexpectedly: Error: getaddrinfo ENOTFOUND irc.oddprotocol.org -13:43:50 Disconnected from the network. Reconnecting in 4 seconds… (Attempt 2) -13:44:03 *** Connection closed unexpectedly: Error: getaddrinfo ENOTFOUND irc.oddprotocol.org -13:44:03 Disconnected from the network. Reconnecting in 6 seconds… (Attempt 3) -13:44:19 *** Connection closed unexpectedly: Error: getaddrinfo ENOTFOUND irc.oddprotocol.org -13:44:19 Disconnected from the network. Reconnecting in 11 seconds… (Attempt 4) -13:44:40 *** Connection closed unexpectedly: Error: getaddrinfo ENOTFOUND irc.oddprotocol.org -13:44:40 Disconnected from the network. Reconnecting in 19 seconds… (Attempt 5) -13:45:10 *** Connection closed unexpectedly: Error: getaddrinfo ENOTFOUND irc.oddprotocol.org -13:45:10 Disconnected from the network. Reconnecting in 37 seconds… (Attempt 6) Yeah Double ping timeout Windows says no internet nwo @@ -7944,8 +7887,6 @@ h|tl: What chars are allowed in a nick? U3 OOps 08,04E -16:07:00 <@h|tl> 01:54:20 PM <@firepup|lounge> h|tl: What chars are allowed in a nick? -16:07:00 <@h|tl> https://tryitands.ee/ :) I need to know for the regex that uses to parse now playing messages h|tl: really? wants to validate in case anyone is trying to abuse it @@ -8476,7 +8417,6 @@ Such as...? lmfao FireBitBot having the lastfm settings .raw PRIVMSG #main :This command could be something much worse :) -[03Admin] Sent: PRIVMSG #main :.raw PRIVMSG #main :This command could be something much worse :) Yeah I know No good easy way to fix though idk wtf you just said @@ -8544,7 +8484,6 @@ f.bef lmao Okay good :firepup|lounge!thelounge@owner.firepi NOTICE #main :PRIVMSG -[WARN][replirc][2023-11-04 21:39:00.184474] Fake message recieved h|tl: can there be spaces in vhost, ident, or nick? ,bef But not normally, so I'll take it @@ -8873,7 +8812,6 @@ f.bef Sopel's entire code became ... lol *k -4,99[20:23] 99,99 15,99* 11,99guest8715,99!~guest87@aqcajm.lan has disconnected (K-Lined) f.bef stabs the server py6606 connected from f.np @@ -8951,7 +8889,6 @@ Okay... .dbg Prepare for netsplit lmao, Sopel corrupted the disk -4,99[17:18] 99,99 9,99Sopel|MNA:99,99 Unexpected error ((sqlite3.DatabaseError) database disk image is malformed[SQL: SELECT nicknames.nick_id AS nicknames_nick_id, nicknames.slug AS nicknames_slug, nicknames.canonical AS nicknames_canonical FROM nicknames WHERE nicknames.slug = ?][parameters: ('coderelijah_amcdsc',)](Background on this error at: https://sqlalche.me/e/14/4xp6)) from coderelijah_amcdsc at 2023-11-07 23:18:38.005594. Message was: darkshayan_a Hi I have like 5% battery Desperatly trying not to have it die, I have like 489 hours of uptime I am not @@ -9081,8 +9018,6 @@ h|tl: Must have been a relay here at some point under that name shrugs What happened to Sopel? Uh -20:51:23 -tilde.amcforum.wiki- *** Notice -- Connection to shell.oddprotocol.org activated -20:51:23 -tilde.amcforum.wiki- *** Notice -- Error connecting to shell.oddprotocol.org[255.255.255.255]: Error during connect() (Connection refused) Isn't that a probem s/m/m?/ s/probem/problem?/ @@ -9140,11 +9075,6 @@ shush Does yours end up sourcing the new user's bashrc? mine does, unintentonally h|tl: -22:03:26 -solanum2.repl- *** Notice -- Connection to hellosmile6.tilde.pink activated -22:04:07 -solanum2.repl- *** Notice -- Connection to hellosmile6.tilde.pink activated -22:04:24 -ircd.9pfs.repl.co- *** Notice -- Connection to hellosmile6.tilde.pink activated -22:04:25 -ircd.9pfs.repl.co- *** Notice -- Error connecting to hellosmile6.tilde.pink[255.255.255.255]: Error during connect() (Connection refused) -22:04:48 -solanum2.repl- *** Notice -- Connection to hellosmile6.tilde.pink activated It doesn't end up making it most of the time when it does it gets refused ... @@ -9229,10 +9159,6 @@ s/ AMC.*der/ david/ ... There we go lmao -[EXIT][ircnow][2023-11-08 09:34:11.801769] Probably a netsplit -[EXIT][ircnow][2023-11-08 10:19:48.185369] Probably a netsplit -[EXIT][ircnow][2023-11-08 10:33:14.546668] Probably a netsplit -[EXIT][ircnow][2023-11-08 13:05:52.054765] Probably a netsplit My phone doesn't run identd? And can't, not if I need a port below like 2048 h|tl: idk @@ -9279,7 +9205,6 @@ It wouldn't be stable and sshfs would be unreliable for a few reasons) That's not my business really. That'd be a david question -17:29:55 <@firepup|lounge> That'd be a david question f.bef lmfao ~22:57 remaining @@ -9572,16 +9497,9 @@ lmao I'm not, no lmao .quote -16:30:15 *** @doxr (doxr@the.most.sussy.doxr) has quit (Killed (firepup-lounge (I'M NOT AI))) -16:30:21 *** doxr (doxr@the.most.sussy.doxr) [doxr] (Izaan Shaik) has joined the channel -16:30:21 *** @PurryCat2022 sets mode +o doxr -16:30:24 *** @doxr (doxr@the.most.sussy.doxr) has quit (Killed (h|tl (that's firepup650, lmao))) lol bef it is connected ngircd chaos? @@ -9671,8 +9586,6 @@ ngircd chaos? +identify lol ah -17:24:22 *** firepup650|enzo (firepi@47.221.227.180) (PyLink Relay Mirror Client) has joined the channel -17:24:22 *** @PurryCat2022 sets mode +o firepup650|enzo Huh? !why firepup650|enzo lmao @@ -9680,8 +9593,6 @@ IP match & name pylink doesn't let it have admin though, lmao Sad no op -17:26:38 *** firepup650 sets mode +o firepup650 -17:26:38 *** @FirePyLink sets mode -o firepup650 Owner status Huh let me try smth @@ -9737,10 +9648,7 @@ dft-bitbot: die ,die doxr: run /oper doxr certfp Just directly -18:31:22 -tilde.amcforum.wiki- *** Notice -- doxr (doxr@the.most.sussy.doxr) is now an operator And your on-connects go in the server config -18:32:54 -irc.firepi.amcforum.wiki- *** Notice -- firepup-lounge!firepup@owner.firepi{fp-tl} is using oper-override on #firepup (banwalking) -18:32:59 -irc.firepi.amcforum.wiki- *** Notice -- firepup-lounge!firepup@owner.firepi{fp-tl} is using oper-override on #private (banwalking) lol I'll walk those bans (I'm not banned is the thing) @@ -9791,7 +9699,6 @@ First and Last jason from friday the 13th 🙃 Why'd you ping h|tl to say hi to ethan JayAySeaOhBee14_amcdsc? -18:59:08 <+> [QUOTE] I wanted it out of the beta before i publicly released it ^ ACNHBASIC Discord does it's own sed lol @@ -10187,8 +10094,6 @@ Hi I had to switch the PI's monitor, the one I usually use for it is failing There Was busy & doing a hostname check -4,99[21:46] 99,99 15,99* 12,99|ircnow15,99 is now known as 11,99NgircdServ|ircnow99,99 -4,99[21:46] 99,99 15,99* 4,99h|thelounge|ircnow15,99 is now known as 10,99KlineServ|ircnow lmao why? ,bef .ping @@ -10304,13 +10209,6 @@ No one can touch the message ETA on AMC? +disconnect enzo shrugs -12:35:43 -ShElL.OdDpRoToCoL.OrG- *** Notice -- ssld error for irc1.Reykr.repl.co: Remote host closed the connection -12:35:43 -irc.firepi.amcforum.wiki- *** Notice -- Netsplit ShElL.OdDpRoToCoL.OrG <-> irc1.Reykr.repl.co (1S 0C) (Remote host closed the connection) -12:35:44 -ircd.9pfs.repl.co- *** Notice -- Connection to irc1.reykr.repl.co activated -12:35:50 -ircd.9pfs.repl.co- *** Notice -- No response from irc1.reykr.repl.co, closing link -12:36:38 -ShElL.OdDpRoToCoL.OrG- *** Notice -- End of burst (emulated) from irc1.Reykr.repl.co (0 seconds) -12:36:38 -irc1.Reykr.repl.co- *** Notice -- End of burst (emulated) from ShElL.OdDpRoToCoL.OrG (0 seconds) -12:36:38 -irc.firepi.amcforum.wiki- *** Notice -- Netjoin ShElL.OdDpRoToCoL.OrG <-> irc1.Reykr.repl.co (1S 0C) reykr breaking case folding again it only responds to the uppercase one don't ask me why @@ -10613,14 +10511,6 @@ Ugh f.ping It also said that On the botbot kills IIRC -4,99[22:36] 99,99 12,99firepup:99,99 +mkill *BitBot* -4,99[22:36] 99,99 13,99FirePyLink:99,99 Masskilled 0/0 users. -4,99[22:36] 99,99 12,99firepup:99,99 Ugh -4,99[22:36] 99,99 12,99firepup:99,99 Y tho -4,99[22:36] 99,99 12,99firepup:99,99 +mkill *bitbot -4,99[22:36] 99,99 13,99FirePyLink:99,99 Masskilled 0/0 users. -4,99[22:36] 99,99 9,99h-tl:99,99 +mkill *bitbot*!*@* -4,99[22:36] 99,99 13,99FirePyLink:99,99 Masskilled 4/4 users. 👀 Um Glad it didn't do that diff --git a/threads.py b/threads.py index bb0ae82..b28bd38 100644 --- a/threads.py +++ b/threads.py @@ -83,7 +83,7 @@ def radio(instance: bare.bot) -> NoReturn: missChunk = 0 missCap = -5 perChunk = 10 - debug = instance.server == "replirc" + debug = False # instance.server == "replirc" while 1: try: newTrack = instance.lastfmLink.get_user("Firepup650").get_now_playing()