58 lines
1.2 KiB
Ruby
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
|