require "./joann-pupper-bot/*" require "logger" require "telepathy" require "time" require "sqlite3" require "cron_scheduler" # Chat IDs chatid_joann = 215301902 chatid_daniel = 220888832 # Configuration database = "sqlite3://./data.sqlite" subreddit = "rarepuppers" chatid = chatid_daniel delay = 1.hours active_hours = 7..24 bot_token = "599474797:AAEmjQNO32uqurI16blS9FT4OoO7GdUZ6h0" # Setup completed = [] of String logger = Logger.new(STDOUT) bot = Telepathy::Bot.new bot_token # Commands. bot.command "ping" do |update, args| bot.send_message(update.message.as(Telepathy::Message).chat.id, "pong") end # Tasks def update_database(db) end bot.command "pupper" do |update, args| url_tuple = get_reddit_post(subreddit, completed) if url_tuple url, title = url_tuple command_chatid = update.message.as(Telepathy::Message).chat.id logger.info "Using URL #{url} for request from #{command_chatid}" bot.send_photo(command_chatid, url, title) else logger.error "Unable to find a post to send." end end spawn do loop do time = Time.now url_tuple = get_reddit_post(subreddit, completed) if (active_hours.includes? time.hour) if url_tuple url, title = url_tuple logger.info "Sending regular picture to #{chatid}." bot.send_photo(chatid.to_i64, url, title) else logger.error "Unable to find a post to send. (Or it's quiet hours)" end sleep delay end end # Code to stop the bot on time. end_channel = Channel(Nil).new(1) bot.poll_end do end_channel.send nil end Signal::INT.trap do logger.info "Shutting down bot..." bot.end_poll end bot.poll end_channel.receive