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 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 = {
"site": "https://botsin.space",
"cw": None,
@ -21,10 +22,10 @@ cfg = {
"mention_handling": 1,
"max_thread_length": 15
}
try:
cfg.update(json.load(open('config.json', 'r')))
except:
shutil.copy2("config.sample.json", "config.json")
cfg.update(json.load(open('config.json', 'r')))

View File

@ -38,6 +38,7 @@ class ReplyListener(mastodon.StreamListener):
posts = 0
for post in context['ancestors']:
if post['account']['id'] == me:
pin = post["id"] #Only used if pin is called, but easier to call here
posts += 1
if posts >= cfg['max_thread_length']:
# stop replying
@ -45,14 +46,30 @@ class ReplyListener(mastodon.StreamListener):
return
mention = extract_toot(notification['status']['content'])
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
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 = 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()
client.stream_user(rl) #go!