From 00da19bb448cd303fd1c70c9c639496ff16d8a91 Mon Sep 17 00:00:00 2001 From: AnInternetTroll Date: Tue, 28 Jul 2020 18:41:47 +0100 Subject: BUG: cannot send message --- cogs/twitter.py | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) mode change 100644 => 100755 cogs/twitter.py (limited to 'cogs/twitter.py') diff --git a/cogs/twitter.py b/cogs/twitter.py old mode 100644 new mode 100755 index d321ca3..668169c --- a/cogs/twitter.py +++ b/cogs/twitter.py @@ -1,37 +1,45 @@ +import json from discord.ext import commands, tasks import discord import tweepy +import asyncio -class MyStreamListener(tweepy.StreamListener): +class StreamListener(tweepy.StreamListener): def on_error(self, status_code): if status_code == 420: + print("Rate limit reached. ") #returning False in on_error disconnects the stream return False - def on_status(self, status): - if hasattr(status, "retweeted_status"): # Check if Retweet - try: - print(status.retweeted_status.extended_tweet["full_text"]) - except AttributeError: - print(status.retweeted_status.text) - else: - try: - print(status.extended_tweet["full_text"]) - except AttributeError: - print(status.text) + def on_data(self, data): + global channelTweet + data = json.loads(data) + tweetUser = data['user']['screen_name'] + tweetID = data['id_str'] + tweetLink = f'https://twitter.com/{tweetUser}/status/{tweetID}' + loop = asyncio.get_event_loop() + try: + loop.run_until_complete(channelTweet.send(tweetLink)) + finally: + loop.run_until_complete(loop.shutdown_asyncgens()) + loop.close() + #print(json.dumps(data, indent='\t')) class Twitter(commands.Cog): def __init__(self, bot): self.bot = bot + global channelTweet + channelTweet = self.bot.get_channel(737713121447378965) + auth = tweepy.OAuthHandler(self.bot.config['twitter']['consumer_key'], self.bot.config['twitter']['consumer_secret']) auth.set_access_token(self.bot.config['twitter']['access_token'], self.bot.config['twitter']['access_token_secret']) api = tweepy.API(auth) - myStreamListener = MyStreamListener() - self.myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener) - self.myStream.filter(follow=['1287799985040437254'], is_async=True) + myStreamListener = StreamListener() + stream = tweepy.Stream(auth = api.auth, listener=myStreamListener) + stream.filter(follow=['1287799985040437254'], is_async=True) def setup(bot): bot.add_cog(Twitter(bot)) \ No newline at end of file -- cgit v1.2.3