Added the ability to pin and unpin toots with the pin and unpin command. Would like to clean up code as well as possibly toot confirmation and error messages

This commit is contained in:
notagoat 2019-05-19 13:31:42 +01:00
parent 2b2824a73e
commit 011ec2c9a8
2 changed files with 28 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

@ -38,6 +38,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
@ -45,6 +46,22 @@ class ReplyListener(mastodon.StreamListener):
return return
mention = extract_toot(notification['status']['content']) mention = extract_toot(notification['status']['content'])
if (mention == "pin") or (mention == "unpin"): #check for keywords
print("Found pin/unpin")
#get a list of people the bot is following
validusers = client.account_following(me)
for user in validusers:
if user["id"] == notification["account"]["id"]: #user is #valid
print("User is valid")
if mention == "pin":
print("pin received, pinning")
client.status_pin(pin)
else:
print("unpin received, unpinning")
client.status_unpin(pin)
else:
print("User is not valid")
else:
toot = functions.make_toot(True)['toot'] #generate a toot toot = functions.make_toot(True)['toot'] #generate a toot
toot = acct + " " + toot #prepend the @ toot = acct + " " + toot #prepend the @
print(acct + " says " + mention) #logging print(acct + " says " + mention) #logging