New one?
This commit is contained in:
parent
aa72de4d03
commit
0fcede8acf
1 changed files with 57 additions and 1 deletions
|
|
@ -1,11 +1,20 @@
|
||||||
import tweepy
|
import tweepy
|
||||||
import random
|
import random
|
||||||
|
import re
|
||||||
|
import requests
|
||||||
from connector import Connector
|
from connector import Connector
|
||||||
|
|
||||||
def init_streamobject(conn):
|
def init_streamobject(conn):
|
||||||
print("Loading Stream object...")
|
print("Loading Stream object...")
|
||||||
return BotYamPoster(conn.get_bearer())
|
return BotYamPoster(conn.get_bearer())
|
||||||
|
|
||||||
|
def expand_tco_url(url):
|
||||||
|
response = requests.head(url, allow_redirects=False)
|
||||||
|
if 'location' in response.headers:
|
||||||
|
return response.headers['location']
|
||||||
|
else:
|
||||||
|
return url
|
||||||
|
|
||||||
def post_reply(conn, victim_bank, tweet, words, reply_text_bank, 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):
|
||||||
|
|
@ -23,7 +32,6 @@ def post_reply(conn, victim_bank, tweet, words, reply_text_bank, postcounter):
|
||||||
return postcounter
|
return postcounter
|
||||||
|
|
||||||
class BotYamPoster(tweepy.StreamingClient):
|
class BotYamPoster(tweepy.StreamingClient):
|
||||||
|
|
||||||
# Define a callback function to handle tweets
|
# Define a callback function to handle tweets
|
||||||
def on_tweet(self, tweet):
|
def on_tweet(self, tweet):
|
||||||
# Make it easy on Yashar
|
# Make it easy on Yashar
|
||||||
|
|
@ -96,3 +104,51 @@ class BotYamPoster(tweepy.StreamingClient):
|
||||||
def on_error(self, status_code):
|
def on_error(self, status_code):
|
||||||
# Print the error code
|
# Print the error code
|
||||||
print("ERROR: " + status_code)
|
print("ERROR: " + status_code)
|
||||||
|
|
||||||
|
def on_direct_message(self, message):
|
||||||
|
# Check if the message is from the authenticated user
|
||||||
|
if message['sender_id'] == self.user_id:
|
||||||
|
return
|
||||||
|
|
||||||
|
conn = Connector()
|
||||||
|
|
||||||
|
# Get the text of the message
|
||||||
|
text = message['text']
|
||||||
|
|
||||||
|
# Find the URL of the tweet in the message
|
||||||
|
tweet_url_regex = r'https?://twitter.com/\w+/status/(\d+)(?:\?.*)?$'
|
||||||
|
tweet_url_match = re.search(tweet_url_regex, text)
|
||||||
|
|
||||||
|
if not tweet_url_match:
|
||||||
|
try:
|
||||||
|
conn.api.send_direct_message(recipient_id=message['sender_id'], text="אין לי את הפונקציה הזאת עדיין סורי נשמה")
|
||||||
|
print("Sent a message back - command unsupported.")
|
||||||
|
except:
|
||||||
|
print("Couldn't even send the message. Eef.")
|
||||||
|
return
|
||||||
|
|
||||||
|
tweet_id = tweet_url_match.group(1)
|
||||||
|
|
||||||
|
# Get the tweet using the API
|
||||||
|
tweet = conn.api.get_tweet(tweet_id)
|
||||||
|
|
||||||
|
tco_regex = r'https?://t.co/\w+'
|
||||||
|
tco_url = re.findall(tco_regex, tweet.data["text"])
|
||||||
|
|
||||||
|
if not tco_url:
|
||||||
|
try:
|
||||||
|
conn.api.send_direct_message(recipient_id=message['sender_id'], text="אין פה סרטון או משהו שאפשר לפרש, זיבי ביי.")
|
||||||
|
print("Sent a message back - command unsupported.")
|
||||||
|
except:
|
||||||
|
print("Couldn't even send the message, and no video in this tweet. Eef.")
|
||||||
|
return
|
||||||
|
|
||||||
|
videon_url = expand_tco_url(tco_url[0])
|
||||||
|
|
||||||
|
# Create a response message with the tweet's text
|
||||||
|
try:
|
||||||
|
conn.api.send_direct_message(recipient_id=message['sender_id'], text="טוב ליסן, מצאתי פה קישור משהו לוקסוס. רק צריך להעתיק לפוסט, לדאוג שזה אחרון בפוסט, ויצא לך אמבד מושלם.")
|
||||||
|
conn.api.send_direct_message(recipient_id=message['sender_id'], text=videon_url)
|
||||||
|
print(f"SENT URL: {videon_url}")
|
||||||
|
except:
|
||||||
|
print(f"Sorry, couldn't send url {videon_url}")
|
||||||
Loading…
Reference in a new issue