mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-01-16 02:47:48 +02:00
Server - minor changes to banhandler
This commit is contained in:
parent
6c9637579a
commit
ec106a7f8f
@ -2,16 +2,12 @@ local Event = require 'utils.event'
|
||||
local Server = require 'utils.server'
|
||||
local Token = require 'utils.token'
|
||||
|
||||
local len = string.len
|
||||
local gmatch = string.gmatch
|
||||
local insert = table.insert
|
||||
local Public = {}
|
||||
|
||||
local ban_by_join_enabled = false
|
||||
|
||||
local try_get_ban = Server.try_get_ban
|
||||
|
||||
--- Jail dataset.
|
||||
local jailed_data_set = 'jailed'
|
||||
|
||||
local try_get_is_banned_token =
|
||||
Token.register(
|
||||
function(data)
|
||||
@ -56,91 +52,8 @@ Event.add(
|
||||
Event.add(
|
||||
defines.events.on_console_command,
|
||||
function(event)
|
||||
local cmd = event.command
|
||||
|
||||
local user = event.parameters
|
||||
if not user then
|
||||
return
|
||||
end
|
||||
|
||||
if len(user) <= 2 then
|
||||
return
|
||||
end
|
||||
|
||||
local player_index
|
||||
local reason
|
||||
local str = ''
|
||||
|
||||
local t = {}
|
||||
for i in gmatch(user, '%S+') do
|
||||
insert(t, i)
|
||||
end
|
||||
|
||||
player_index = t[1]
|
||||
|
||||
for i = 2, #t do
|
||||
str = str .. t[i] .. ' '
|
||||
reason = str
|
||||
end
|
||||
|
||||
if not player_index then
|
||||
return print('[on_console_command] - player_index was undefined.')
|
||||
end
|
||||
|
||||
local target
|
||||
if game.get_player(player_index) then
|
||||
target = game.get_player(player_index)
|
||||
else
|
||||
return
|
||||
end
|
||||
|
||||
if event.player_index then
|
||||
local player = game.get_player(event.player_index)
|
||||
if player and player.valid and player.admin then
|
||||
-- if target.index == player.index then
|
||||
-- return
|
||||
-- end
|
||||
|
||||
local data = Server.build_embed_data()
|
||||
data.username = target.name
|
||||
data.admin = player.name
|
||||
|
||||
if cmd == 'ban' then
|
||||
Server.set_data(jailed_data_set, target.name, nil) -- this is added here since we don't want to clutter the jail dataset.
|
||||
if not reason then
|
||||
data.reason = 'Not specified.'
|
||||
Server.to_banned_embed(data)
|
||||
return
|
||||
else
|
||||
data.reason = reason
|
||||
Server.to_banned_embed(data)
|
||||
return
|
||||
end
|
||||
elseif cmd == 'unban' then
|
||||
Server.to_unbanned_embed(data)
|
||||
return
|
||||
end
|
||||
end
|
||||
else
|
||||
local data = Server.build_embed_data()
|
||||
data.username = target.name
|
||||
data.admin = '<Server>'
|
||||
|
||||
if cmd == 'ban' then
|
||||
Server.set_data(jailed_data_set, target.name, nil) -- this is added here since we don't want to clutter the jail dataset.
|
||||
if not reason then
|
||||
data.reason = 'Not specified.'
|
||||
Server.to_banned_embed(data)
|
||||
return
|
||||
else
|
||||
data.reason = reason
|
||||
Server.to_banned_embed(data)
|
||||
return
|
||||
end
|
||||
elseif cmd == 'unban' then
|
||||
Server.to_unbanned_embed(data)
|
||||
return
|
||||
end
|
||||
end
|
||||
Server.ban_handler(event)
|
||||
end
|
||||
)
|
||||
|
||||
return Public
|
||||
|
@ -12,6 +12,8 @@ local concat = table.concat
|
||||
local serialize = serpent.serialize
|
||||
local remove = table.remove
|
||||
local tostring = tostring
|
||||
local len = string.len
|
||||
local gmatch = string.gmatch
|
||||
|
||||
local raw_print = Print.raw_print
|
||||
local minutes_to_ticks = 60 * 60
|
||||
@ -92,6 +94,9 @@ local player_leave_tag = '[PLAYER-LEAVE]'
|
||||
|
||||
Public.raw_print = raw_print
|
||||
|
||||
--- Jail dataset.
|
||||
local jailed_data_set = 'jailed'
|
||||
|
||||
local data_set_handlers = {}
|
||||
|
||||
local function assert_non_empty_string_and_no_spaces(str, argument_name)
|
||||
@ -1317,6 +1322,98 @@ function Public.query_online_players()
|
||||
raw_print(message)
|
||||
end
|
||||
|
||||
function Public.ban_handler(event)
|
||||
local cmd = event.command
|
||||
|
||||
local user = event.parameters
|
||||
if not user then
|
||||
return
|
||||
end
|
||||
|
||||
if len(user) <= 2 then
|
||||
return
|
||||
end
|
||||
|
||||
local player_index
|
||||
local reason
|
||||
local str = ''
|
||||
|
||||
local t = {}
|
||||
for i in gmatch(user, '%S+') do
|
||||
insert(t, i)
|
||||
end
|
||||
|
||||
player_index = t[1]
|
||||
|
||||
for i = 2, #t do
|
||||
str = str .. t[i] .. ' '
|
||||
reason = str
|
||||
end
|
||||
|
||||
if not player_index then
|
||||
return print('[on_console_command] - player_index was undefined.')
|
||||
end
|
||||
|
||||
local target
|
||||
if game.get_player(player_index) then
|
||||
target = game.get_player(player_index)
|
||||
if not target or not target.valid then
|
||||
return
|
||||
end
|
||||
else
|
||||
return
|
||||
end
|
||||
|
||||
if event.player_index then
|
||||
local player = game.get_player(event.player_index)
|
||||
if player and player.valid and player.admin then
|
||||
local data = Public.build_embed_data()
|
||||
data.username = target.name
|
||||
data.admin = player.name
|
||||
|
||||
if cmd == 'ban' then
|
||||
Public.set_data(jailed_data_set, target.name, nil) -- this is added here since we don't want to clutter the jail dataset.
|
||||
if not reason then
|
||||
data.reason = 'Not specified.'
|
||||
Public.to_banned_embed(data)
|
||||
return
|
||||
else
|
||||
data.reason = reason
|
||||
Public.to_banned_embed(data)
|
||||
return
|
||||
end
|
||||
elseif cmd == 'unban' then
|
||||
Public.to_unbanned_embed(data)
|
||||
return
|
||||
end
|
||||
end
|
||||
else
|
||||
local data = Public.build_embed_data()
|
||||
data.username = target.name
|
||||
data.admin = '<server>'
|
||||
|
||||
if event.user_override then
|
||||
data.admin = event.user_override
|
||||
end
|
||||
|
||||
if cmd == 'ban' then
|
||||
Public.set_data(jailed_data_set, target.name, nil) -- this is added here since we don't want to clutter the jail dataset.
|
||||
if not reason then
|
||||
data.reason = 'Not specified.'
|
||||
Public.to_banned_embed(data)
|
||||
return
|
||||
else
|
||||
data.reason = reason
|
||||
Public.to_banned_embed(data)
|
||||
return
|
||||
end
|
||||
elseif cmd == 'unban' then
|
||||
Public.to_unbanned_embed(data)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function command_handler(callback, ...)
|
||||
if type(callback) == 'function' then
|
||||
local success, err = pcall(callback, ...)
|
||||
|
@ -37,6 +37,7 @@ ServerCommands.export_stats = Server.export_stats
|
||||
ServerCommands.set_start_data = Server.set_start_data
|
||||
ServerCommands.set_instances = Server.set_instances
|
||||
ServerCommands.query_online_players = Server.query_online_players
|
||||
ServerCommands.ban_handler = Server.ban_handler
|
||||
|
||||
local SC_Interface = {
|
||||
get_ups = function()
|
||||
|
Loading…
Reference in New Issue
Block a user