discord-r9k/lib/bootstrap-db.rb
2021-08-24 11:53:35 +02:00

58 lines
1.2 KiB
Ruby

#!/usr/bin/ruby
require 'discordrb'
require 'set'
require './auth'
FETCH_COUNT = 10
FETCH_AMOUNT = 100 # must be <= 100
bot = Discordrb::Bot.new token: TOKEN
$messages = Set.new
bot.ready do |event|
bot.update_status("dnd", "Bootstrapping Database", nil)
chan = bot.channel CHANNEL
last_message = chan.history(1)[0].id
i = 1
for iter in 1..FETCH_COUNT do
chan.history(FETCH_AMOUNT, last_message).each do |msg|
print "Fetching messages (#{i}/#{FETCH_COUNT * FETCH_AMOUNT}) ...\r"
$stdout.flush
$messages << msg.content
if msg.id < last_message then
last_message = msg.id
end
sleep(0.064) # ratelimit
i += 1
end
end
print "Fetching messages (#{i - 1}/#{FETCH_COUNT * FETCH_AMOUNT}) ...\n"
puts "Done! Shutting down..."
save_db
bot.stop
end
def read_db
msg_count = 0
File.foreach("messages.db") do |entry|
$messages << entry.chop.gsub("\v", "\n")
msg_count += 1
end
puts "Read #{msg_count.to_s} messages from database"
end
def save_db
File.open("messages.db", "w") do |file|
$messages.each do |msg|
file.write msg.gsub("\n", "\v") + "\n"
end
end
end
read_db
bot.run