# cheeseBot # Copyright (C) 2026 Eri (csxkdv/nxkdv) nxkdv@thenight.club # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . require 'discordrb' require 'securerandom' require_relative 'events/message_check' require_relative 'events/button_handler' class CheeseBot def initialize puts "Initializing bot..." @bot = Discordrb::Bot.new( token: ENV['BOT_TOKEN'], intents: [:servers, :server_messages] ) puts "Registering the Message Checker and Button Handler..." MessageCheck.register(@bot) ButtonHandler.register(@bot) puts "Initializing database..." Database.setup puts "Loading commands..." load_commands puts "Starting bot..." start_bot end def run @bot.run end private def load_commands Dir["#{File.dirname(__FILE__)}/commands/**/*.rb"].each do |file| require file end Commands.constants.each do |const| cmd = Commands.const_get(const) if cmd.is_a?(Module) && cmd.respond_to?(:register) cmd.register(@bot) puts "Loaded command: #{const}" sleep(2) end end end def start_bot @bot.ready do puts "#{@bot.profile.username} is online... GIVE ME THE CHEESE." @bot.update_status("online", "Eating cheese.", nil, 0, false, 0) end end end