为Discord服务器创建Twitter机器人

时间:2018-08-18 14:31:03

标签: python python-3.x tweepy discord.py

我正在尝试创建一个Discord机器人,该机器人将监视我的Twitter提要并将消息发布到Discord服务器上的特定频道中。我知道该任务(zapier和IFTTT)已经存在解决方案,但我也想以此作为练习来发展我的编码技能。

我一直在关注this example,但是现在我无法使其成功运行。我的问题是,该漫游器可以成功加入Discord服务器并监视我的Twitter提要,但不会发布该消息。我已经使用了一条打印语句(该行print(message))来确定该机器人确实收到了新的推文。

我已经将访问令牌和秘密密钥存储在另一个名为twitter_credentials.py的文件中(因此会导入)。我正在使用Tweepy和discord.py库,将不胜感激-下面的代码使用<<编辑过的>>标识字符串:

import tweepy, discord
import twitter_credentials

twitter_access_token = twitter_credentials.access_token
twitter_access_token_secret = twitter_credentials.access_token_secret
twitter_consumer_key = twitter_credentials.consumer_key
twitter_consumer_secret = twitter_credentials.consumer_secret
discord_token = twitter_credentials.token_twitter_bot

client = discord.Client()

class StdOutListener(tweepy.StreamListener):
    """ A listener handles tweets that are received from the stream.
        This is a basic listener that just prints received tweets to stdout."""

    def on_status(self, status):

        if not status.in_reply_to_status_id == None:
            message = '@{0} : {1}'.format(status.in_reply_to_screen_name, status.text)
        else:
            message = '{0}'.format(status.text)
        print(message)

        channel = client.get_channel('<<channel_id>>')
        em = discord.Embed(title='Tweet', description='My Twitter Feed', colour=0xDEADBF)
        em.set_author(name='@ <<Twitter_handle>>', icon_url=client.user.default_avatar_url)

        client.send_message(channel, message, embed = em)


@client.event
async def on_ready():    
    if not client.is_logged_in:
        raise Exception('Unable to connect to Discord')
    else:
        print('Connected to Discord')

    auth = tweepy.OAuthHandler(twitter_consumer_key, twitter_consumer_secret, callback = 'oob')
    auth.secure = True
    auth.set_access_token(twitter_access_token, twitter_access_token_secret)

    print('Starting Twitter stream')
    stream = tweepy.Stream(auth, StdOutListener())
    stream.filter(['<<twitter_ID>>'])

client.run(discord_token)

谢谢

Qui

0 个答案:

没有答案