├── Procfile ├── requirements.txt ├── screen.jpeg ├── credentials.py ├── README.md └── twitterbot.py /Procfile: -------------------------------------------------------------------------------- 1 | worker: python twitterbot.py -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | tweepy==3.6.0 2 | editdistance==0.4 -------------------------------------------------------------------------------- /screen.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsn5/fakeElonDetector/HEAD/screen.jpeg -------------------------------------------------------------------------------- /credentials.py: -------------------------------------------------------------------------------- 1 | consumer_key = 'YOUR_CONSUMER_KEY' 2 | consumer_secret = 'YOUR_CONSUMER_SECRET' 3 | access_token = 'YOUR_ACCESS_TOKEN' 4 | access_token_secret = 'YOUR_ACCESS_TOKEN_SECRET' 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | fakeElonDetector 3 | ------------------ 4 | Twitter [bot](https://twitter.com/elon_fake) to detect and report fake Elon Musk accounts 5 | 6 | ![screenshot](https://github.com/jsn5/fakeElonDetector/blob/master/screen.jpeg?raw=true) 7 | 8 | ## Requirements 9 | 10 | * tweepy==3.6.0 11 | * editdistance==0.4 12 | 13 | ## Instructions 14 | 15 | * To set up bot on heroku follow this [tutorial](http://briancaffey.github.io/2016/04/05/twitter-bot-tutorial.html) 16 | * Get required credentials for the API from [https://apps.twitter.com/](https://apps.twitter.com/) 17 | 18 | -------------------------------------------------------------------------------- /twitterbot.py: -------------------------------------------------------------------------------- 1 | import tweepy 2 | from credentials import * 3 | import editdistance 4 | import time 5 | 6 | auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 7 | auth.set_access_token(access_token, access_token_secret) 8 | api = tweepy.API(auth,wait_on_rate_limit=True) 9 | c = tweepy.Cursor(api.search,q='to:'+'elonmusk',since_id='1017463575919693826',include_entities=True).items() 10 | 11 | real_screen_name = 'elonmusk' 12 | real_name = 'Elon Musk' 13 | 14 | while True: 15 | try: 16 | tweet = c.next() 17 | text = tweet.text 18 | name = tweet.user.name 19 | screen_name = tweet.user.screen_name 20 | tweet_id = tweet.id 21 | print(tweet_id) 22 | if screen_name != real_screen_name: 23 | name_dist = editdistance.eval(real_name, name) 24 | screen_dist = editdistance.eval(real_screen_name',screen_name) 25 | if name_dist <= 2 or screen_dist <= 4: 26 | print("fake found") 27 | api.update_status("*❗️❗️beep boop❗️❗️* Fake Elon Musk detected❎, report as spam ❎ @elonmusk @{}".format(screen_name), in_reply_to_status_id=tweet_id) 28 | api.report_spam([screen_name]) 29 | except tweepy.TweepError: 30 | print("limit reached") 31 | time.sleep(60*5) 32 | continue 33 | except StopIteration: 34 | print("end of result") 35 | time.sleep(10) 36 | c = tweepy.Cursor(api.search,q='to:'+'elonmusk',since_id=tweet_id,include_entities=True).items() 37 | continue 38 | 39 | 40 | --------------------------------------------------------------------------------