用于后台发送欢迎信息的脚本

这是更新后的脚本,其中包含发件人用户名:

MAX_MESSAGES = 1000 # 可选的测试限制
SECONDS_BETWEEN_MESSAGES = 3 # 3 秒间隔
SENDER_USERNAME = "coco"

message_sender = User.find_by(username: SENDER_USERNAME)

if message_sender.nil?
  Rails.logger.error "找不到发件人用户 '#{message_sender_username}'!"
  exit
end

Rails.logger.info "正在启动批量消息脚本..."

# 定义消息内容
message_title = "欢迎来到我们的社区"
message_body = "你好!我们很高兴你加入我们。如果你有任何问题,请告诉我们!"

# 按最后登录时间排序获取用户
users = User.where(active: true)
            .where.not(staged: true) # 排除暂存用户
            .order(last_seen_at: :desc)
            .limit(MAX_MESSAGES)

Rails.logger.info "找到 #{users.count} 个活跃用户需要发送消息。"

users.each_with_index do |user, index|
  begin
    Rails.logger.info "正在为 #{user.username} 排队消息 (#{index + 1}/#{users.count})..."

    PostCreator.create!(
      message_sender,
      title: message_title,
      raw: message_body,
      archetype: Archetype.private_message,
      target_usernames: user.username,
      skip_validations: true
    )

    Rails.logger.info "已成功为 #{user.username} 排队消息。"

    # 在处理下一个用户之前等待指定的间隔
    sleep(SECONDS_BETWEEN_MESSAGES)
  rescue => e
    Rails.logger.error "发送消息给 #{user.username} 失败:#{e.message}"
  end
end

Rails.logger.info "批量消息脚本已完成!"