add database bootstrapper

This commit is contained in:
Emily 2021-08-24 11:26:01 +02:00
parent 7d75c736c4
commit 687db72911

57
lib/bootstrap-db.rb Normal file
View file

@ -0,0 +1,57 @@
#!/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 0..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.072) # ratelimit
i += 1
end
end
print "Fetching messages (#{i}/#{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
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 + "\n"
end
end
end
read_db
bot.run