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:
parent
2b2824a73e
commit
011ec2c9a8
2 changed files with 28 additions and 10 deletions
5
main.py
5
main.py
|
@ -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')))
|
||||
|
||||
|
|
33
reply.py
33
reply.py
|
@ -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!
|
||||
|
|
Loading…
Reference in a new issue