-- /home/ChatBox — с обратным отсчётом и корректным Ctrl+C
local component = require("component")
local event = require("event")
local term = require("term")
local chat = component.chat_box or component.chat
assert(chat, "Chat Box не найден. Поставь рядом/через Adapter.")
-- настройки
local NAME = "botWarpS"
local DISTANCE = 32767 -- сделай локальный радиус; ставь 32767 для «везде»
local PERIOD = 3600 -- 10 минут
local MESSAGE = "§2✌ ⫸Warp S⫷ ✌ §4➤ &3Магазин ⣿ §5Механизмы ⣿ §aОбмен §aруды ⣿ §eКачалка опыта ✔"
if chat.setName then pcall(chat.setName, NAME) end
if chat.setDistance then pcall(chat.setDistance, DISTANCE) end
local function say(msg)
if chat.say then chat.say(msg) elseif chat.sendMessage then chat.sendMessage(msg) end
end
local function drawStatus(remain)
local m = math.floor(remain / 60)
local s = remain % 60
term.clear()
term.setCursor(1,1)
io.write(("Сообщение: %s\n"):format(MESSAGE))
io.write(("Отправитель: %s\n"):format(NAME))
io.write(("Следующая отправка через: %02d:%02d\n"):format(m, s))
io.write("Нажми Ctrl+C для остановки.\n")
end
-- первое сообщение сразу
pcall(say, MESSAGE)
drawStatus(PERIOD)
-- слушаем Ctrl+C и считаем секунды
local running = true
event.listen("interrupted", function() running = false end)
while running do
for t = PERIOD, 1, -1 do
drawStatus(t)
-- ждём любое событие до 1 сек; если было Ctrl+C, running станет false
local name = event.pull(1)
if not running or name == "interrupted" then running = false; break end
end
if not running then break end
pcall(say, MESSAGE)
drawStatus(PERIOD)
end
event.ignore("interrupted", function() running=false end)
term.clear()
term.setCursor(1,1)
print("Остановлено.")