46 lines
1.3 KiB
Ruby
46 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module DiscourseAi::AiBot::SiteSettingsExtension
|
|
def self.enable_or_disable_ai_bots
|
|
enabled_bots = SiteSetting.ai_bot_enabled_chat_bots_map
|
|
enabled_bots = [] if !SiteSetting.ai_bot_enabled
|
|
|
|
DiscourseAi::AiBot::EntryPoint::BOTS.each do |id, bot_name, name|
|
|
if id == DiscourseAi::AiBot::EntryPoint::FAKE_ID
|
|
next if Rails.env.production?
|
|
end
|
|
active = enabled_bots.include?(name)
|
|
user = User.find_by(id: id)
|
|
|
|
if active
|
|
if !user
|
|
user =
|
|
User.new(
|
|
id: id,
|
|
email: "no_email_#{name}",
|
|
name: bot_name.titleize,
|
|
username: UserNameSuggester.suggest(bot_name),
|
|
active: true,
|
|
approved: true,
|
|
admin: true,
|
|
moderator: true,
|
|
trust_level: TrustLevel[4],
|
|
)
|
|
user.save!(validate: false)
|
|
else
|
|
user.update_columns(active: true)
|
|
end
|
|
elsif !active && user
|
|
# will include deleted
|
|
has_posts = DB.query_single("SELECT 1 FROM posts WHERE user_id = #{id} LIMIT 1").present?
|
|
|
|
if has_posts
|
|
user.update_columns(active: false) if user.active
|
|
else
|
|
user.destroy
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|