Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 35 additions & 5 deletions afk_tag.lua
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,17 @@ local function is_not_afk(player)
assertions_by_player[player:get_player_name()] = nil
end

function bls.afk.is_afk(player_name, afk_us)
if not afk_us then
afk_us = time_since_last_action(player_name)
end
local reason = assertions_by_player[player_name]

return reason or afk_us > AFK_BOUND_PERIOD, reason, afk_us
end

function bls.afk.set_afk(player, afk_us)
if assertions_by_player[player:get_player_name()] or afk_us > AFK_BOUND_PERIOD then
if bls.afk.is_afk(player:get_player_name(), afk_us) then
is_afk(player, afk_us)
else
is_not_afk(player)
Expand Down Expand Up @@ -153,10 +162,9 @@ minetest.register_chatcommand("is_afk", {
end

local cannon_player_name = target_player:get_player_name()
local afk_us = time_since_last_action(cannon_player_name)
local reason = assertions_by_player[cannon_player_name]
local player_is_afk, reason, afk_us = bls.afk.is_afk(cannon_player_name)

if reason or afk_us > AFK_BOUND_PERIOD then
if player_is_afk then
minetest.chat_send_player(player, ('Player "%s" has been AFK for %im%s'):format(
cannon_player_name,
afk_us / (60 * 1000000),
Expand All @@ -166,4 +174,26 @@ minetest.register_chatcommand("is_afk", {
minetest.chat_send_player(player, ('Player "%s" does not seem to be AFK'):format(cannon_player_name))
end
end,
})
})

if minetest.global_exists("irc") then
minetest.register_chatcommand("who", {
description = "Tell who is currently on the channel",
privs = {},
func = function()
local out, afk = { }, { }
for plname in pairs(irc.joined_players) do
if bls.afk.is_afk(plname) then
table.insert(afk, plname)
else
table.insert(out, plname)
end
end
table.sort(out)
table.sort(afk)
return true, tostring(#out + #afk).." player(s) in channel."..
" Active: "..table.concat(out, ", ")..
" AFK: "..table.concat(afk, ", ")
end
})
end