Merge pull request #24 from notagoat/pin-branch

Add un/pin to the bot
This commit is contained in:
Lynne 2019-05-19 23:09:11 +10:00 committed by GitHub
commit 575c473301
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 10 deletions

View File

@ -11,8 +11,9 @@ import os, sqlite3, signal, sys, json, re, shutil
import requests import requests
import functions import functions
scopes = ["read:statuses", "read:accounts", "read:follows", "write:statuses", "read:notifications"] scopes = ["read:statuses", "read:accounts", "read:follows", "write:statuses", "read:notifications", "write:accounts"]
#cfg defaults #cfg defaults
cfg = { cfg = {
"site": "https://botsin.space", "site": "https://botsin.space",
"cw": None, "cw": None,
@ -21,10 +22,10 @@ cfg = {
"mention_handling": 1, "mention_handling": 1,
"max_thread_length": 15 "max_thread_length": 15
} }
try: try:
cfg.update(json.load(open('config.json', 'r'))) cfg.update(json.load(open('config.json', 'r')))
except: except:
shutil.copy2("config.sample.json", "config.json") shutil.copy2("config.sample.json", "config.json")
cfg.update(json.load(open('config.json', 'r'))) cfg.update(json.load(open('config.json', 'r')))

View File

@ -39,6 +39,7 @@ class ReplyListener(mastodon.StreamListener):
posts = 0 posts = 0
for post in context['ancestors']: for post in context['ancestors']:
if post['account']['id'] == me: if post['account']['id'] == me:
pin = post["id"] #Only used if pin is called, but easier to call here
posts += 1 posts += 1
if posts >= cfg['max_thread_length']: if posts >= cfg['max_thread_length']:
# stop replying # stop replying
@ -46,14 +47,35 @@ class ReplyListener(mastodon.StreamListener):
return return
mention = extract_toot(notification['status']['content']) mention = extract_toot(notification['status']['content'])
toot = functions.make_toot(True)['toot'] #generate a toot if (mention == "pin") or (mention == "unpin"): #check for keywords
toot = acct + " " + toot #prepend the @ print("Found pin/unpin")
print(acct + " says " + mention) #logging #get a list of people the bot is following
visibility = notification['status']['visibility'] validusers = client.account_following(me)
if visibility == "public": for user in validusers:
visibility = "unlisted" if user["id"] == notification["account"]["id"]: #user is #valid
client.status_post(toot, post_id, visibility=visibility, spoiler_text = cfg['cw']) #send toost print("User is valid")
print("replied with " + toot) #logging visibility = notification['status']['visibility']
if visibility == "public":
visibility = "unlisted"
if mention == "pin":
print("pin received, pinning")
client.status_pin(pin)
client.status_post("Toot pinned!", post_id, visibility=visibility, spoiler_text = cfg['cw'])
else:
print("unpin received, unpinning")
client.status_post("Toot unpinned!", post_id, visibility=visibility, spoiler_text = cfg['cw'])
client.status_unpin(pin)
else:
print("User is not valid")
else:
toot = functions.make_toot(True)['toot'] #generate a toot
toot = acct + " " + toot #prepend the @
print(acct + " says " + mention) #logging
visibility = notification['status']['visibility']
if visibility == "public":
visibility = "unlisted"
client.status_post(toot, post_id, visibility=visibility, spoiler_text = cfg['cw']) #send toost
print("replied with " + toot) #logging
rl = ReplyListener() rl = ReplyListener()
client.stream_user(rl) #go! client.stream_user(rl) #go!