tidy up accounts
channel key in account's json will limit that key to that channel
This commit is contained in:
parent
1e42b6d655
commit
fb60e68b3f
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
|
75
tooter.py
75
tooter.py
|
@ -10,38 +10,35 @@ import emoji
|
||||||
import glob
|
import glob
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import re
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
HELPTEXT = "helo i can send toots from irc: @tildeverse@tilde.zone - from @tildeteam from the #team channel)"
|
HELPTEXT = "helo i can send toots from irc: @tildeverse@tilde.zone - from @tildeteam from the #team channel)"
|
||||||
|
|
||||||
|
|
||||||
def masto_from_json(conf):
|
|
||||||
conf = json.load(conf)
|
|
||||||
return Mastodon(
|
|
||||||
client_id=conf["client_id"],
|
|
||||||
client_secret=conf["client_secret"],
|
|
||||||
access_token=conf["access_token"],
|
|
||||||
api_base_url=conf["base_url"],
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
masto = {}
|
masto = {}
|
||||||
|
assigned_channels = {}
|
||||||
# load masto creds
|
# load masto creds
|
||||||
for cred in glob.glob("tilde*.json"):
|
for cred in glob.glob("tilde*.json"):
|
||||||
shortname, _ = os.path.splitext(cred)
|
shortname, _ = os.path.splitext(cred)
|
||||||
with open(cred, "r") as f:
|
with open(cred, "r") as f:
|
||||||
masto[shortname] = masto_from_json(f)
|
conf = json.load(f)
|
||||||
|
if "channel" in conf:
|
||||||
|
assigned_channels[conf["channel"]] = shortname
|
||||||
|
masto[shortname] = Mastodon(
|
||||||
|
client_id=conf["client_id"],
|
||||||
|
client_secret=conf["client_secret"],
|
||||||
|
access_token=conf["access_token"],
|
||||||
|
api_base_url=conf["base_url"],
|
||||||
|
)
|
||||||
|
|
||||||
|
if "tildeverse" not in masto:
|
||||||
|
print("you must populate tildeverse.json with mastodon credentials")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
# do setup
|
# do setup
|
||||||
path = os.path.dirname(os.path.abspath(__file__))
|
with open("config.json", "r") as f:
|
||||||
|
|
||||||
with open(os.path.join(path, "config.json"), "r") as f:
|
|
||||||
config = json.load(f)
|
config = json.load(f)
|
||||||
|
with open("account.json", "r") as f:
|
||||||
if os.path.isfile(os.path.join(path, "account.json")):
|
account = json.load(f)
|
||||||
with open(os.path.join(path, "account.json"), "r") as f:
|
|
||||||
account = json.load(f)
|
|
||||||
|
|
||||||
channels = config["channels"]
|
channels = config["channels"]
|
||||||
if len(sys.argv) > 1:
|
if len(sys.argv) > 1:
|
||||||
|
@ -52,25 +49,20 @@ if len(sys.argv) > 1:
|
||||||
def think(line):
|
def think(line):
|
||||||
chan = line.params[0]
|
chan = line.params[0]
|
||||||
words = line.params[1].split(" ")
|
words = line.params[1].split(" ")
|
||||||
|
cmd = words[0].lower()
|
||||||
|
|
||||||
if len(words) > 0:
|
if cmd == "!source":
|
||||||
cmd = words[0].lower()
|
return "https://tildegit.org/ben/tooter"
|
||||||
if cmd == "!toot":
|
elif cmd in ["!botlist", "!toothelp"]:
|
||||||
if len(words) >= 2:
|
return HELPTEXT
|
||||||
status = emoji.emojize(" ".join(words[1:]), use_aliases=True)
|
elif cmd == "!toot":
|
||||||
if chan == "#team":
|
if len(words) >= 2:
|
||||||
res = masto["tildeteam"].toot(status)
|
status = emoji.emojize(" ".join(words[1:]), use_aliases=True)
|
||||||
elif chan == "#club":
|
res = masto[
|
||||||
res = masto["tildeclub"].toot(status)
|
assigned_channels[chan] if chan in assigned_channels else "tildeverse"
|
||||||
else:
|
].toot(status)
|
||||||
res = masto["tildeverse"].toot(status)
|
return "tooted! {}".format(res["url"])
|
||||||
print(res)
|
else:
|
||||||
return "tooted! {}".format(res["url"])
|
|
||||||
else:
|
|
||||||
return HELPTEXT
|
|
||||||
elif cmd == "!source":
|
|
||||||
return "https://tildegit.org/ben/tooter"
|
|
||||||
elif cmd in ["!botlist", "!toothelp"]:
|
|
||||||
return HELPTEXT
|
return HELPTEXT
|
||||||
|
|
||||||
|
|
||||||
|
@ -81,18 +73,17 @@ class Server(BaseServer):
|
||||||
async def line_read(self, line: Line):
|
async def line_read(self, line: Line):
|
||||||
print(f"{self.name} < {line.format()}")
|
print(f"{self.name} < {line.format()}")
|
||||||
if line.command == "001":
|
if line.command == "001":
|
||||||
print(f"connected to {self.isupport.network}")
|
|
||||||
await self.send(build("JOIN", [",".join(channels)]))
|
await self.send(build("JOIN", [",".join(channels)]))
|
||||||
await self.send(build("MODE", [self.nickname, "+B"]))
|
await self.send(build("MODE", [self.nickname, "+B"]))
|
||||||
|
|
||||||
if line.command == "INVITE":
|
if line.command == "INVITE":
|
||||||
print(f"received invite to {line.params[1:]}")
|
|
||||||
await self.send(build("JOIN", line.params[1:]))
|
await self.send(build("JOIN", line.params[1:]))
|
||||||
|
|
||||||
if (
|
if (
|
||||||
line.command == "PRIVMSG"
|
line.command == "PRIVMSG"
|
||||||
and self.has_channel(line.params[0])
|
and self.has_channel(line.params[0])
|
||||||
and self.has_user(line.hostmask.nickname)
|
and self.has_user(line.hostmask.nickname)
|
||||||
|
and len(line.params[1].split(" ")) > 0
|
||||||
and not line.hostmask is None
|
and not line.hostmask is None
|
||||||
and not self.casefold(line.hostmask.nickname) == self.nickname_lower
|
and not self.casefold(line.hostmask.nickname) == self.nickname_lower
|
||||||
and not ("batch" in line.tags and line.tags["batch"] == "1")
|
and not ("batch" in line.tags and line.tags["batch"] == "1")
|
||||||
|
@ -108,8 +99,6 @@ class Bot(BaseBot):
|
||||||
|
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
bot = Bot()
|
|
||||||
|
|
||||||
params = ConnectionParams(
|
params = ConnectionParams(
|
||||||
config["botnick"],
|
config["botnick"],
|
||||||
host=config["address"],
|
host=config["address"],
|
||||||
|
@ -117,7 +106,7 @@ async def main():
|
||||||
tls=config["tls"],
|
tls=config["tls"],
|
||||||
sasl=SASLUserPass(account["username"], account["password"]),
|
sasl=SASLUserPass(account["username"], account["password"]),
|
||||||
)
|
)
|
||||||
|
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