我正在尝试创建一个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