异步功能不会执行其中的所有内容

问题描述 投票:0回答:1

因此,我正在使用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')

我试图创建另一个功能只是为了获取推文并返回一条消息,但是没有被调用,所以我不知道我在做什么错。

python python-3.x discord tweepy discord.py
1个回答
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,或者只是插入您要发布的屏幕名称。

就返回指向推文的链接而言,您可以使用推文的属性来构建推文的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"])
© www.soinside.com 2019 - 2024. All rights reserved.