from mastodon import Mastodon
import random
import os
from urllib import parse
from worker import conn
import psycopg2
from utils import first_time_setup, update_toots, markov_toot
from rq import Queue
# setting up the redis, mastodon and postgres connections
q = Queue(connection=conn)
mastodon = Mastodon(
client_id=os.environ['client_id'],
client_secret=os.environ['client_secret'],
access_token=os.environ['access_token'],
api_base_url=os.environ['instance']
)
parse.uses_netloc.append("postgres")
url = parse.urlparse(os.environ["DATABASE_URL"])
dbconn = psycopg2.connect(
database=url.path[1:],
user=url.username,
password=url.password,
host=url.hostname,
port=url.port
)
cur = dbconn.cursor()
# this is a check to see if it's the first time a user's run the bot, so the script knows to do db setup
try:
cur.execute("select value from config_data where id=%s", ("setup",))
except psycopg2.ProgrammingError:
first_time = True
else:
first_time = False
if first_time:
q.enqueue(first_time_setup, timeout=1800)
else:
cur.execute("select value from config_data where id=%s", ("userid",))
userid = cur.fetchone()
userid = userid[0]
q.enqueue(update_toots, userid, timeout=900)
if random.randint(1, 4) == 1:
q.enqueue(markov_toot, timeout=900)
print("generating toot")
else:
print("Not tooting this hour.")