因此,我正在使用python3.7和discord.py制作Discord机器人。 它的功能之一是可以使用tweepy库从discord发送推文,这是我的代码:
@bot.command(name='tw',help='tuitea')
@commands.has_role("chechu's")
async def tweet(ctx, *, args):
tweepy.update_status(args)
tweet = self.client.user_timeline(id = self.client_id, count = 1)[0]
await ctx.send('tweet sent')
我的问题是,在发送了推文之后(这很正常),我想返回一条消息,其中包含指向刚刚发布的推文的链接。
如您在上面看到的,我尝试使用tweet = self.client.user_timeline(id = self.client_id, count = 1)[0]
获得最后一条推特,但是执行甚至没有到达await ctx.send('tweet sent')
我试图创建另一个功能只是为了获取推文并返回一条消息,但是没有被调用,所以我不知道我在做什么错。
答案 0 :(得分:0)
在我看来self.client_id可能设置不正确。
我试用了代码,当我用id=self.client_id
(Wendy的twitter帐户ID)代替id='59553554'
时,它运行良好:
tweet = client.user_timeline(id ='59553554',count = 1)[0]
我还尝试使用screen_name属性,该属性也返回了Wendy发送的最后一条推文:
tweet = client.user_timeline(screen_name ='@ Wendys',count = 1)[0]
为解决您的问题,我将检查以确保将self.client_id正确设置为该帐户使用的现有ID,或者只是插入您要发布的屏幕名称。
就返回指向该tweet的链接而言,您可以使用tweet的属性来构建tweet的URL:
等待ctx.channel.send(“ https://twitter.com/” + tweet.user.screen_name +“ / status /” + tweet.id_str)
这是完整的代码:
import discord
import tweepy
import os
from discord.ext import commands
prefix = "$"
bot = commands.Bot(command_prefix=prefix)
auth = tweepy.OAuthHandler(os.environ["TWITTER_API_KEY"], os.environ["TWITTER_API_SECRET"])
client = tweepy.API(auth)
@bot.command(pass_context=True)
async def tweet(ctx):
tweet = client.user_timeline(id='59553554', count = 1)[0]
await ctx.channel.send("https://twitter.com/" + tweet.user.screen_name + "/status/" + tweet.id_str)
tweet = client.user_timeline(screen_name='@Wendys', count = 1)[0]
await ctx.channel.send("https://twitter.com/" + tweet.user.screen_name + "/status/" + tweet.id_str)
bot.run(os.environ["DISCORD_TOKEN"])