ask.discourse.org 输出一个不错的起点,作为 rails 脚本:
MAX_MESSAGES = 1000 # 可选的测试限制
SECONDS_BETWEEN_MESSAGES = 3 # 3 秒间隔
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!(
Discourse.system_user,
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 "批量消息脚本已完成!"
我没有做任何修改,用户 system 向我的测试实例中的所有用户发送了 MP:
你们有多少用户?

