我试图让我的 python twitter 机器人每小时每 30 分钟发一次推文。我该怎么办? [关闭]
Posted
技术标签:
【中文标题】我试图让我的 python twitter 机器人每小时每 30 分钟发一次推文。我该怎么办? [关闭]【英文标题】:I am trying to get my python twitter bot to tweet every 30 minutes on the hour. What should I do? [closed] 【发布时间】:2020-06-12 21:36:30 【问题描述】:机器人需要在整点每 30 分钟发一次推文(即在 12:30,然后是 1:00,然后是 1:30...)。我理解 tweepy 和所有这些。我只需要弄清楚如何让计时器工作。我在想这样的事情:
if (time = "12:00") or (time = "12:30") or (time = "1:00") or...:
# tweet
我不知道要使用什么包或如何设置它。
【问题讨论】:
时间实际上是一个日期时间对象还是一个时间字符串? 该尝试将立即失败。你不能在if
语句中赋值。
我提供的代码实际上并没有被使用。我只是想知道我想做的事情是有意义的。如果时间在每小时的 30 分钟标记上,我只需要它来发推文
您好,欢迎来到 SO。你能展示你到目前为止所做的事情吗?您是否在 Google 上搜索过 python timer
或开发了代码?请更具体地说明您需要什么帮助,而不是“为我做这件事”之类的问题。
【参考方案1】:
所以使用 datetime 你实际上可以像这样得到分钟:
from datetime import datetime
time = datetime.now()
minutes = time.minute
或者在一行中:
from datetime import datetime
minutes = datetime.now().minute
现在你有了分钟,if 语句可以简化,因为你不看小时。
if minutes == 0 or minutes == 30:
# do tweet
编辑:
你评论问: “也很好奇,这是否意味着我需要在 00 点运行我的程序,因为时间是通过 now 函数创建的?”
所以理论上这里有几种方法可以回答这个问题。首先将您的代码包装在一个函数中并不断调用它:
def tweet_check(minutes):
minutes = datetime.now().minutes
if minutes == 0 or minutes == 30:
# do tweet
if __name__ == '__main__':
# This would be how it constantly runs the check
while true:
tweet_check()
选项 1:
然后,当您希望机器人每 30 分钟发送一次推文时,您可以手动运行脚本。
选项 2
通过检查 if main == 'main' 您将能够将此脚本导入另一个脚本,然后按照您自己的条件运行它。作为导入的脚本,您可以使用调度程序在特定时间运行它。
选项 3:
将其作为系统计划任务 (windows) 或 cron 作业 (linux) 运行以使其在启动时运行。
但是,关键是要指出,如果您确实将其用作选项 2 或 3,那么最好对其进行修改,如果您希望它在任何时间都发送,则可以在其中传入一个可选变量。
所以我会这样修改它:
def tweet_check(time_check=True):
if time_check:
minutes = datetime.now().minutes
if minutes == 0 or minutes == 30:
# do tweet
else:
# do tweet
这是因为选项 2 和 3 都固有地内置了时间。所以在这里再做一次是过度/低效的。在这个简单的例子中,这不会有太大的不同,但是在几千条推文的规模上,它最终会滚动到下一分钟,然后会切断一些推文。
【讨论】:
正是我想要的。谢谢! @parisosuch 如果有帮助,您可以将其标记为已接受吗? 也很好奇,这是否意味着我需要在 :00 时运行我的程序,因为time
是通过 now 函数创建的?
我将编辑我的帖子并处理您的评论。评论回复会有点长。
谢谢!我相信我写的东西也有效(检查帖子编辑)。我在一个在线 IDE 上运行它来测试它的功能。【参考方案2】:
您可以使用 Scheduler 库启动 here。试试这个作为它如何工作的例子,你显然可以在本地这样做,但不推荐这样做:
import schedule
def job():
print("A Simple Python Scheduler.")
# run the function job() every 30 minutes
schedule.every(30).minutes.do(job)
while True:
schedule.run_pending()
【讨论】:
【参考方案3】:我会研究 PyPI 调度模块:
https://pypi.org/project/schedule/
【讨论】:
以上是关于我试图让我的 python twitter 机器人每小时每 30 分钟发一次推文。我该怎么办? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
试图让我的 Discord 机器人响应“我不是婴儿潮一代 >:(”但它不会响应。我该如何修复代码?