Python discord bot 发送旧推文而不是最新和最相关的推文

Posted

技术标签:

【中文标题】Python discord bot 发送旧推文而不是最新和最相关的推文【英文标题】:Python discord bot sends old tweets instead of latest and most relevant 【发布时间】:2022-01-08 14:35:38 【问题描述】:

我一直在用 discord.py 和 python 创建一个不和谐的机器人。我希望机器人自动发布从 twitter 检索到的每日 covid 号码。我通过在服务器中发送“$QLD”来启动机器人,如果发布今天的数字,然后休眠 24 小时并再次循环返回发布数字。我唯一的问题是继续发布从原始日期检索到的相同数字。我怎样才能让机器人每天研究推特号码?这是我到目前为止的代码。

import tweepy
import discord
from asyncio import sleep as s

auth = tweepy.OAuthHandler("twitterCodes", "twitterCodes")
auth.set_access_token("twitterCodes", "twitterCodes")

api = tweepy.API(auth)

# a function to get the latest tweet and return it as a string

anna_covid_tweet = api.user_timeline(screen_name="annastaciaMP", count=3, tweet_mode="extended", include_rts=False)
for info in anna_covid_tweet:
    if "coronavirus" in info.full_text:
        covidnum = info.full_text
    else:
        print("No tweet found")

#discord bot stuff

client = discord.Client()
bottoken = 'discord bot token'

@client.event
async def on_ready():
    print('Logged in as 0.user'.format(client))

@client.event
async def on_message(message):
  while message.content.startswith('$QLD'):
    await message.channel.send('These are the QLD covid numbers for today!')
    await message.channel.send(covidnum)
    await s(86400) - 86400 is 24hours in seconds fyi


client.run(bottoken)

提前谢谢你。非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

你想让它成为一个返回值的函数,并在每次运行命令时调用它。

import tweepy
import discord
from asyncio import sleep as s

auth = tweepy.OAuthHandler("twitterCodes", "twitterCodes")
auth.set_access_token("twitterCodes", "twitterCodes")

api = tweepy.API(auth)

# create a function that returns the text
def get_covidnum():
    anna_covid_tweet = api.user_timeline(screen_name="annastaciaMP", count=3, 
    tweet_mode="extended", include_rts=False)
    for info in anna_covid_tweet:
        if "coronavirus" in info.full_text:
            return info.full_text
        else:
            print("No tweet found")
            return "No tweet found"

#discord bot stuff

client = discord.Client()
bottoken = 'discord bot token'

@client.event
async def on_ready():
    print('Logged in as 0.user'.format(client))

@client.event
async def on_message(message):
  while message.content.startswith('$QLD'):
    await message.channel.send('These are the QLD covid numbers for today!')
    await message.channel.send(get_covidnum()) # call the function
    await s(86400) - 86400 is 24hours in seconds fyi


client.run(bottoken)

【讨论】:

以上是关于Python discord bot 发送旧推文而不是最新和最相关的推文的主要内容,如果未能解决你的问题,请参考以下文章

在for循环中发送多条消息discord python bot

Python Discord bot 在异常时发送文本

Discord BOT python,如何在特定用户编写命令时发送消息

Discord Bot 使用 python 向一个命令发送多个响应

我的 python discord bot 奇怪地发送消息

如何从 Youtube 向 discord bot python 发送视频