【问题标题】:How can I keep my Twitter Bot awake with Rails?如何使用 Rails 让我的 Twitter Bot 保持清醒?
【发布时间】:2020-04-16 09:19:49
【问题描述】:

我的主要目的是创建一个 twitter 机器人。这基本上是要转发某些帐户的推文。一切正常,除了让机器人保持清醒。为了让机器人保持清醒,我需要让我的笔记本电脑和控制台保持打开状态。我如何部署一个可以为我执行此操作的应用程序?我想让服务器为这一切工作。我尝试使用 Heroku,但它给出了预期的超时,因为请求应该打开以保持我的方法继续运行。

提前谢谢...

我的方法:

    def self.start_bot
    @client = Twitter::REST::Client.new do |config|
      config.consumer_key        = ENV["CONSUMER_KEY"]
      config.consumer_secret     = ENV["CONSUMER_SECRET_KEY"]
      config.access_token        = ENV["ACCESS_TOKEN"]
      config.access_token_secret = ENV["ACCESS_SECRET_TOKEN"]
    end

    while true do
      begin
        @client.search("from:ExampleAccount1 OR from:ExampleAccount1 OR from:ExampleAccount1
min_faves:250 -rt", result_type: "recent").take(5).collect do |tweet|
            begin
              @client.fav(tweet)
              @client.retweet(tweet)
              sleep(2)
            rescue
              puts "Already retweeted."
              sleep(3)
            end
        end
        puts "one round completed."
        sleep(120)
      rescue
        puts "Something Happened"
        sleep(240)
      end
    end
  end

【问题讨论】:

    标签: ruby-on-rails ruby twitter server bots


    【解决方案1】:

    我认为您可以使用#clockwork_gem

    您需要执行以下操作:

    • 首先安装发条gem。

    在你的 lib 文件夹中创建一个 lib/clock.rb

    ### Example :-
    require 'clockwork'
    require './config/boot'
    require './config/environment'
    
    module Clockwork
    
      handler do |job|
        puts "Running #{job}"
      end
    
      every(1.day, 'Creating Cycle', :at => '12:00') {YourClass_name.start_bot}
    end
    
    • 创建一个过程文件 给你的Procfile 像这样使用

      worker: bundle exec clockwork lib/clock.rb
      

    每次 Heroku push/web 服务器重启后都会启动服务器。

    或者您可以像这样使用计算机上的控制台运行,但在这种情况下,您需要在每次重新启动 Web 服务器后运行

    heroku run bundle exec clockwork lib/clock.rb
    

    然后从 Heroku 打开控制台并输入

    bundle exec clockwork lib/clock.rb
    

    希望这会有所帮助:)

    【讨论】:

    • 非常感谢您的努力。您的解决方案正是我所需要的:) 在解决方案之前我不得不这样做。我的意思是我为 heroku 找到了一个附加组件,它被称为“Heroku Scheduler”。这与您的解决方案基本相同。谢谢!
    猜你喜欢
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 2019-08-27
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多