Switch to Redis
This commit is contained in:
parent
a8232064f6
commit
3f2320a6fc
3 changed files with 56 additions and 29 deletions
|
|
@ -10,4 +10,5 @@ tweepy==4.12.1
|
||||||
urllib3==1.26.13
|
urllib3==1.26.13
|
||||||
jsonschema==3.2.0
|
jsonschema==3.2.0
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
python-consul==1.1.0
|
crc16=0.1.1
|
||||||
|
python-redis=0.3.0
|
||||||
|
|
@ -4,16 +4,15 @@ import syslog
|
||||||
import random
|
import random
|
||||||
import json
|
import json
|
||||||
from main import Connector
|
from main import Connector
|
||||||
from main import init_api
|
|
||||||
|
|
||||||
def init_streamobject():
|
def init_streamobject(conn):
|
||||||
syslog.syslog(syslog.LOG_INFO, "Loading Stream object...")
|
syslog.syslog(syslog.LOG_INFO, "Loading Stream object...")
|
||||||
bearer = os.getenv("BEARER")
|
return BotYamPoster(conn.get_bearer())
|
||||||
return BotYamPoster(bearer)
|
|
||||||
|
|
||||||
def post_reply(conn, victim_bank, tweet, words, reply_text, postcounter):
|
def post_reply(conn, victim_bank, tweet, words, reply_text_bank, postcounter):
|
||||||
# Search for word in word bank
|
# Search for word in word bank
|
||||||
if any(word in tweet.data['text'] for word in words):
|
if any(word in tweet.data['text'] for word in words):
|
||||||
|
reply_text = reply_text_bank[random.randint(0, (reply_text_bank.len()-1))]
|
||||||
# Post reply
|
# Post reply
|
||||||
if tweet.data['author_id'] in victim_bank.author_id:
|
if tweet.data['author_id'] in victim_bank.author_id:
|
||||||
reply_text = victim_bank.text[random.randint(0,2)] + "\n" + reply_text
|
reply_text = victim_bank.text[random.randint(0,2)] + "\n" + reply_text
|
||||||
|
|
@ -41,8 +40,7 @@ class BotYamPoster(tweepy.StreamingClient):
|
||||||
return
|
return
|
||||||
|
|
||||||
conn = Connector()
|
conn = Connector()
|
||||||
i, d = conn.conn_consul.get.kv('botyam/reply_bank')
|
reply_bank = json.loads(conn.dbconn.get_reply_bank())
|
||||||
reply_bank = json.loads(d["Value"])
|
|
||||||
|
|
||||||
# Debug
|
# Debug
|
||||||
tweet_data = f"NEW TWEET from @{conn.api.get_user(id=tweet.data['author_id']).data['username']}: {tweet.data['text']}"
|
tweet_data = f"NEW TWEET from @{conn.api.get_user(id=tweet.data['author_id']).data['username']}: {tweet.data['text']}"
|
||||||
|
|
@ -55,16 +53,33 @@ class BotYamPoster(tweepy.StreamingClient):
|
||||||
|
|
||||||
# Run on all gags
|
# Run on all gags
|
||||||
for gag in reply_bank.gags:
|
for gag in reply_bank.gags:
|
||||||
post_reply(conn, reply_bank.victims, tweet, gag.keywords, gag.reply, postcounter)
|
postcounter = post_reply(conn, reply_bank.victims, tweet, gag.keywords, gag.reply, postcounter)
|
||||||
|
|
||||||
# Special gags
|
# Special gags
|
||||||
if reply_bank.special_gags['haikar_misadot'].keywords[0] in tweet.data["text"]:
|
if reply_bank.special_gags['haikar_misadot'].keywords[0] in tweet.data["text"]:
|
||||||
post_reply(conn, reply_bank.victims, tweet, reply_bank.special_gags['haikar_misadot'].keywords, reply_bank.special_gags['haikar_misadot'].reply)
|
postcounter = post_reply(
|
||||||
|
conn,
|
||||||
|
reply_bank.victims,
|
||||||
|
tweet,
|
||||||
|
reply_bank.special_gags['haikar_misadot'].keywords,
|
||||||
|
reply_bank.special_gags['haikar_misadot'].reply,
|
||||||
|
postcounter)
|
||||||
elif not any(gebol in tweet.data['text'] for gebol in reply_bank.gags[1].keywords) and any(misada in tweet.data['text'] for misada in reply_bank.special_gags['misadot'].keywords):
|
elif not any(gebol in tweet.data['text'] for gebol in reply_bank.gags[1].keywords) and any(misada in tweet.data['text'] for misada in reply_bank.special_gags['misadot'].keywords):
|
||||||
post_reply(conn, reply_bank.victims, tweet, reply_bank.special_gags['misadot'].keywords)
|
postcounter = post_reply(
|
||||||
|
conn,
|
||||||
|
reply_bank.victims,
|
||||||
|
tweet,
|
||||||
|
reply_bank.special_gags['misadot'].keywords,
|
||||||
|
reply_bank.special_gags['misadot'].reply,
|
||||||
|
postcounter)
|
||||||
|
|
||||||
if any(tilter in tweet.data['text'] for tilter in reply_bank.special_gags['tilt'].keywords) or (postcounter == 0 and not "@FromBotYam" in tweet.data['text']):
|
if any(tilter in tweet.data['text'] for tilter in reply_bank.special_gags['tilt'].keywords) or (postcounter == 0 and "@FromBotYam" in tweet.data['text']):
|
||||||
post_reply(conn, reply_bank.victims, tweet, reply_bank.special_gags['tilt'].keywords, reply_bank.special_gags['tilt'].reply)
|
postcounter = post_reply(
|
||||||
|
conn,
|
||||||
|
reply_bank.victims,
|
||||||
|
tweet, reply_bank.special_gags['tilt'].keywords,
|
||||||
|
reply_bank.special_gags['tilt'].reply,
|
||||||
|
postcounter)
|
||||||
|
|
||||||
# Define a callback function to handle errors
|
# Define a callback function to handle errors
|
||||||
def on_error(self, status_code):
|
def on_error(self, status_code):
|
||||||
|
|
|
||||||
43
src/main.py
43
src/main.py
|
|
@ -1,40 +1,51 @@
|
||||||
import tweepy
|
import tweepy
|
||||||
import os
|
import os
|
||||||
import syslog
|
import syslog
|
||||||
import consul
|
|
||||||
import json
|
import json
|
||||||
|
import redis
|
||||||
from BotYamPoster import BotYamPoster
|
from BotYamPoster import BotYamPoster
|
||||||
from BotYamPoster import init_streamobject
|
from BotYamPoster import init_streamobject
|
||||||
|
|
||||||
|
|
||||||
class Connector:
|
class Connector():
|
||||||
conn_consul = set()
|
|
||||||
api = set()
|
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
syslog.syslog(syslog.LOG_INFO, "Loading Consul connector...")
|
syslog.syslog(syslog.LOG_INFO, "Loading Consul connector...")
|
||||||
# TODO: Add token
|
# TODO: Add token
|
||||||
conn_consul = consul.Consul(host='', port='')
|
self.dbconn = redis.Redis(
|
||||||
|
host=os.getenv("REDIS_HOST"),
|
||||||
|
port=os.getenv("REDIS_PORT"),
|
||||||
|
password=os.getenv("REDIS_CREDENTIALS")
|
||||||
|
)
|
||||||
|
|
||||||
api = Connector.init_api(conn_consul)
|
self.api = Connector.init_api(self.dbconn)
|
||||||
|
|
||||||
def init_api(conn_consul):
|
def init_api(dbconn):
|
||||||
# Syslog report
|
# Syslog report
|
||||||
syslog.syslog(syslog.LOG_INFO, "Loading Twitter API connector...")
|
syslog.syslog(syslog.LOG_INFO, "Loading Twitter API connector...")
|
||||||
i, kv_keys = conn_consul.kv.get('botyam/api')
|
|
||||||
|
|
||||||
return tweepy.Client(
|
return tweepy.Client(
|
||||||
bearer_token=json.loads(kv_keys['Value']).bearer,
|
bearer_token=str(dbconn.hget("api", "bearer")),
|
||||||
consumer_key=json.loads(kv_keys['Value']).consumer_key,
|
consumer_key=str(dbconn.hget("api", "consumer_key")),
|
||||||
consumer_secret=json.loads(kv_keys['Value']).consumer_secret,
|
consumer_secret=str(dbconn.hget("api", "consumer_secret"))
|
||||||
access_token=json.loads(kv_keys['Value']).access_token,
|
access_token=str(dbconn.hget("api", "access_token")),
|
||||||
access_token_secret=json.loads(kv_keys['Value']).access_token_secret)
|
access_token_secret=str(dbconn.hget("api","access_token_secret"))
|
||||||
|
)
|
||||||
|
|
||||||
|
def get_reply_bank(self):
|
||||||
|
return json.loads(self.dbconn.get('reply_bank'))
|
||||||
|
|
||||||
|
def get_victims(self):
|
||||||
|
return json.loads(self.dbconn.get('reply_bank')).victims
|
||||||
|
|
||||||
|
def get_bearer(self):
|
||||||
|
return str(self.dbconn.hget("api", "bearer"))
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
syslog.syslog(syslog.LOG_INFO, "BOT-YAM - VERSION 2.1.2 >>>>")
|
syslog.syslog(syslog.LOG_INFO, "BOT-YAM - VERSION 2.1.2 >>>>")
|
||||||
stream = init_streamobject()
|
conn = Connector()
|
||||||
|
stream = init_streamobject(conn)
|
||||||
syslog.syslog(syslog.LOG_INFO, "Adding stream rules...")
|
syslog.syslog(syslog.LOG_INFO, "Adding stream rules...")
|
||||||
stream.add_rules(tweepy.StreamRule("from:LucyBscalE OR from:aviv_yashar OR from:shaulig OR from:DvirAviam OR from:YoavFried1 OR from:StevenRaz5 OR from:nir_hau"))
|
stream.add_rules(tweepy.StreamRule(conn.get_victims().stream_filter))
|
||||||
stream.add_rules(tweepy.StreamRule("@FromBotYam"))
|
stream.add_rules(tweepy.StreamRule("@FromBotYam"))
|
||||||
# Start listening for tweets
|
# Start listening for tweets
|
||||||
syslog.syslog(syslog.LOG_INFO, "Starting Twitter stream!")
|
syslog.syslog(syslog.LOG_INFO, "Starting Twitter stream!")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue