Bla reports: staff command to tag a player ... #4214

Closed
opened 2023-04-17 20:05:25 +00:00 by yourland-report · 17 comments

Bla reports a bug:

staff command to tag a player so that all staff get a notice on login with short explanation. for example "/tag XYZ see report #1234"

Player position:

{
	x = 4468.3500976563,
	y = -64.499000549316,
	z = -29874.89453125
}

Player look:

{
	x = 0.60055637359619,
	y = -0.10938735306263,
	z = -0.79206466674805
}

Player information:

{
	version_string = "5.8.0-dev-5cd6a22dd-dirty",
	lang_code = "",
	max_rtt = 0.85399997234344,
	minor = 8,
	ip_version = 6,
	min_rtt = 0.024000000208616,
	avg_rtt = 0.025000000372529,
	min_jitter = 0,
	max_jitter = 0.72699999809265,
	avg_jitter = 0,
	connection_uptime = 1805,
	serialization_version = 29,
	patch = 0,
	state = "Active",
	protocol_version = 41,
	formspec_version = 6,
	major = 5
}

Player meta:

{
	fields = {
		bitten = "0",
		placed_nodes = "674532",
		died = "105",
		["unified_inventory:bags"] = "return {\"water_life:croc_bag\", \"water_life:croc_bag\", \"water_life:croc_bag\", \"water_life:croc_bag\"}",
		hud_state = "on",
		xp = "2604352",
		repellant = "0",
		["stamina:poisoned"] = "no",
		["stamina:exhaustion"] = "72.5",
		["ambience.svol"] = "1",
		yl_commons_player_created = "1635266646",
		yl_commons_player_joined = "1681760290",
		inflicted_damage = "3731118",
		["3d_armor_inventory"] = "return {\"3d_armor:boots_crystal 1 39060\", \"3d_armor:chestplate_crystal 1 39060\", \"3d_armor:leggings_crystal 1 39060\", \"shields:shield_crystal 1 39060\", \"3d_armor:helmet_crystal 1 39060\", \"\"}",
		jointime = "1635266646",
		punch_count = "185995",
		arenalib_infobox_arenaID = "0",
		ui_waypoints = "{\"data\":[{\"active\":false,\"color\":2.0,\"display_pos\":true,\"world_pos\":{\"x\":-448.0,\"y\":25.0,\"z\":1341.0}},{\"active\":false,\"world_pos\":{\"x\":-447.0,\"y\":25.0,\"z\":1344.0}}],\"selected\":1.0}",
		yl_commons_thankyou = "393",
		["stamina:level"] = "17",
		partychat = "party",
		crafted = "40416",
		["signslib:pos"] = "(4476,-54,-29877)",
		yl_church = "return {[\"last_death_portal\"] = 1680695669, [\"last_death\"] = {[\"z\"] = -29843, [\"x\"] = 4471, [\"y\"] = -3619}, [\"last_heal\"] = 1635970005}",
		digged_nodes = "2167130",
		["ocean_build.last_warning"] = "1.66187e+09",
		["ocean_build.forbidden"] = "true",
		["ocean_build.ocean_built"] = "12",
		played_time = "11554098"
	}
}

Log identifier


[MOD] yl_report log identifier = 1igGLks0upvu9XYzhoM2xUNJ0XoUDJlX

Profiler save:

profile-20230417T200525.json_prettyEE

Status:

# Server: version: 5.6.1-yl | game: Minetest Game | uptime: 3d 22h 31min 53s | max lag: 0.922s | clients (35/52): AliasAlreadyTaken, Apocralypse, AriellesWish, Bailiff, Balrog_Dude, betzi, bizon, Bla, Boot, Chache, Chameleon, CorvidCrusader, DanteLeo, Dirac, drgn, Ekin_Alkan, fellow, flux, Insomniacs_Yello, jackofthebean000, JeCel, Kalek, labrat, Laurii, Lupercus, MineWorlds, Murmel, niceride, Ravise, Service, shanish3, sixer, Sokomine, soufian123, Sysmatic

Teleport command:

/teleport xyz 4468 -64 -29875

Compass command:

/give_compass Construction 1igGLks0upvu9XYzhoM2xUNJ0XoUDJlX D2691E 4468 -64 -29875
Bla reports a bug: > staff command to tag a player so that all staff get a notice on login with short explanation. for example "/tag XYZ see report #1234" Player position: ``` { x = 4468.3500976563, y = -64.499000549316, z = -29874.89453125 } ``` Player look: ``` { x = 0.60055637359619, y = -0.10938735306263, z = -0.79206466674805 } ``` Player information: ``` { version_string = "5.8.0-dev-5cd6a22dd-dirty", lang_code = "", max_rtt = 0.85399997234344, minor = 8, ip_version = 6, min_rtt = 0.024000000208616, avg_rtt = 0.025000000372529, min_jitter = 0, max_jitter = 0.72699999809265, avg_jitter = 0, connection_uptime = 1805, serialization_version = 29, patch = 0, state = "Active", protocol_version = 41, formspec_version = 6, major = 5 } ``` Player meta: ``` { fields = { bitten = "0", placed_nodes = "674532", died = "105", ["unified_inventory:bags"] = "return {\"water_life:croc_bag\", \"water_life:croc_bag\", \"water_life:croc_bag\", \"water_life:croc_bag\"}", hud_state = "on", xp = "2604352", repellant = "0", ["stamina:poisoned"] = "no", ["stamina:exhaustion"] = "72.5", ["ambience.svol"] = "1", yl_commons_player_created = "1635266646", yl_commons_player_joined = "1681760290", inflicted_damage = "3731118", ["3d_armor_inventory"] = "return {\"3d_armor:boots_crystal 1 39060\", \"3d_armor:chestplate_crystal 1 39060\", \"3d_armor:leggings_crystal 1 39060\", \"shields:shield_crystal 1 39060\", \"3d_armor:helmet_crystal 1 39060\", \"\"}", jointime = "1635266646", punch_count = "185995", arenalib_infobox_arenaID = "0", ui_waypoints = "{\"data\":[{\"active\":false,\"color\":2.0,\"display_pos\":true,\"world_pos\":{\"x\":-448.0,\"y\":25.0,\"z\":1341.0}},{\"active\":false,\"world_pos\":{\"x\":-447.0,\"y\":25.0,\"z\":1344.0}}],\"selected\":1.0}", yl_commons_thankyou = "393", ["stamina:level"] = "17", partychat = "party", crafted = "40416", ["signslib:pos"] = "(4476,-54,-29877)", yl_church = "return {[\"last_death_portal\"] = 1680695669, [\"last_death\"] = {[\"z\"] = -29843, [\"x\"] = 4471, [\"y\"] = -3619}, [\"last_heal\"] = 1635970005}", digged_nodes = "2167130", ["ocean_build.last_warning"] = "1.66187e+09", ["ocean_build.forbidden"] = "true", ["ocean_build.ocean_built"] = "12", played_time = "11554098" } } ``` Log identifier ``` [MOD] yl_report log identifier = 1igGLks0upvu9XYzhoM2xUNJ0XoUDJlX ``` Profiler save: ``` profile-20230417T200525.json_prettyEE ``` Status: ``` # Server: version: 5.6.1-yl | game: Minetest Game | uptime: 3d 22h 31min 53s | max lag: 0.922s | clients (35/52): AliasAlreadyTaken, Apocralypse, AriellesWish, Bailiff, Balrog_Dude, betzi, bizon, Bla, Boot, Chache, Chameleon, CorvidCrusader, DanteLeo, Dirac, drgn, Ekin_Alkan, fellow, flux, Insomniacs_Yello, jackofthebean000, JeCel, Kalek, labrat, Laurii, Lupercus, MineWorlds, Murmel, niceride, Ravise, Service, shanish3, sixer, Sokomine, soufian123, Sysmatic ``` Teleport command: ``` /teleport xyz 4468 -64 -29875 ``` Compass command: ``` /give_compass Construction 1igGLks0upvu9XYzhoM2xUNJ0XoUDJlX D2691E 4468 -64 -29875 ```
AliasAlreadyTaken was assigned by yourland-report 2023-04-17 20:05:25 +00:00
AliasAlreadyTaken added the
1. kind/enhancement
label 2023-04-17 20:53:33 +00:00
Member

Yes, would be very useful to mark some non-planters or some non-english-talkers.

Yes, would be very useful to mark some non-planters or some non-english-talkers.
AliasAlreadyTaken added the
2. prio/good first issue
label 2023-04-19 14:13:20 +00:00

for this you would have to know which language the people speak, how is that supposed to be implemented??

for this you would have to know which language the people speak, how is that supposed to be implemented??

for this you would have to know which language the people speak, how is that supposed to be implemented??

First of all the client info contains the selected language so its possible.

But thats not even necessary Boot just provided some use cases to my suggestion so the language info in that case would come from staff itself without any code needed.

> for this you would have to know which language the people speak, how is that supposed to be implemented?? First of all the client info contains the selected language so its possible. But thats not even necessary Boot just provided some use cases to my suggestion so the language info in that case would come from staff itself without any code needed.

ok so this becomes unnecessary for a programmer and this is a case for AliasAlredyTaken?

ok so this becomes unnecessary for a programmer and this is a case for AliasAlredyTaken?
Member

the client info contains the selected language so its possible.

the client doesn't send the user's locale to the server; translation is done by giving the client all the translation files and sending a specially designed message that instructs the client on how to build a translation.

> the client info contains the selected language so its possible. the client doesn't send the user's locale to the server; translation is done by giving the client all the translation files and sending a specially designed message that instructs the client on how to build a translation.

The question of the language will be solved elsewhere, this type of tagging is informational only and there are not automatisms involved.

A solution to this issue:

  • Decide on the data structure you want the tags stored in. Will one player have more than one tag on it? Will one player have only the latest tag stored?
  • Decide on a backend you want those tags stored in, depending on the data structure and level of confidentiality.
  • Create functions to SET a tag for a player and to LIST the tags for a player. If applicable, create a function to DELETE a tag for a player.
  • Create a way to configure who is allowed to set tags and who is allowed to read tags. Use the minetest.conf to decide on that. Normal players have no elevated privs, bailiffs have the priv "bailiff" and staff have the priv "staff".
  • Create a chatcommand that uses the SET function which . Add a useful description and decide on the priv the account who sets this data should have. What parameters does this function need and What do the parameters need to be checked for?
  • Create a chatcommand that uses the LIST function to read out all the tags for a player and display them in a reasonable way. Same questions regarding privs and parameter checking like in the previous.
  • When a player joins, select the last tag that was stored for this player and display it to everyone with a configured priv. Selecting a last tag requires you to store a date or ID, you may need to extend the datastructure you decided on in the first question. If there are more than one tags on the player, display the last tag and the information how many more tags are there. Use the on_joinplayer.
  • Add logging, so that every use of either chatcommand is logged, including the queried data.
The question of the language will be solved elsewhere, this type of tagging is informational only and there are not automatisms involved. A solution to this issue: * [ ] Decide on the data structure you want the tags stored in. Will one player have more than one tag on it? Will one player have only the latest tag stored? * [ ] Decide on a backend you want those tags stored in, depending on the data structure and level of confidentiality. * [ ] Create functions to SET a tag for a player and to LIST the tags for a player. If applicable, create a function to DELETE a tag for a player. * [ ] Create a way to configure who is allowed to set tags and who is allowed to read tags. Use the minetest.conf to decide on that. Normal players have no elevated privs, bailiffs have the priv "bailiff" and staff have the priv "staff". * [ ] Create a chatcommand that uses the SET function which . Add a useful description and decide on the priv the account who sets this data should have. What parameters does this function need and What do the parameters need to be checked for? * [ ] Create a chatcommand that uses the LIST function to read out all the tags for a player and display them in a reasonable way. Same questions regarding privs and parameter checking like in the previous. * [ ] When a player joins, select the last tag that was stored for this player and display it to everyone with a configured priv. Selecting a last tag requires you to store a date or ID, you may need to extend the datastructure you decided on in the first question. If there are more than one tags on the player, display the last tag and the information how many more tags are there. Use the `on_joinplayer`. * [ ] Add logging, so that every use of either chatcommand is logged, including the queried data.

the client info contains the selected language so its possible.

the client doesn't send the user's locale to the server; translation is done by giving the client all the translation files and sending a specially designed message that instructs the client on how to build a translation.

minetest.get_player_information
lang_code = "fr", -- Language code used for translation

@flux Because this isn´t the first time.
I got no problem with being corrected but it would be nice if you would atleast check first.

> > the client info contains the selected language so its possible. > > the client doesn't send the user's locale to the server; translation is done by giving the client all the translation files and sending a specially designed message that instructs the client on how to build a translation. [minetest.get_player_information](https://github.com/minetest/minetest/blob/9d1ae80e89530e2d8883606cc35b7560edd37489/doc/lua_api.txt#L4984) `lang_code = "fr", -- Language code used for translation` @flux Because this isn´t the first time. I got no problem with being corrected but it would be nice if you would atleast check first.

In most clients, this lang_code isn't set. If it is, it does give indication at best, we cannot hardcore rely on it as it's a user set value. But since there's not much reason to not tell the truth about the language, we can at least guess that direction.

There is a Point 4 in #3323 (comment) to guess a client language. If need be, we should open another issue to discuss language guessing and leave this issue to the initial tag request.

In most clients, this lang_code isn't set. If it is, it does give indication at best, we cannot hardcore rely on it as it's a user set value. But since there's not much reason to *not* tell the truth about the language, we can at least guess that direction. There is a Point 4 in https://gitea.your-land.de/your-land/bugtracker/issues/3323#issuecomment-37524 to guess a client language. If need be, we should open another issue to discuss language guessing and leave this issue to the initial tag request.
Member

I actually meant that in the sense that if communication as a bailiff (or staff) is difficult, then it is sometimes due to age (you can do little), but sometimes also due to the player's lack of English skills. This is exactly where a reference to the language would be useful. Otherwise, the origin can remain anonymous.

I actually meant that in the sense that if communication as a bailiff (or staff) is difficult, then it is sometimes due to age (you can do little), but sometimes also due to the player's lack of English skills. This is exactly where a reference to the language would be useful. Otherwise, the origin can remain anonymous.
Member

the client info contains the selected language so its possible.

the client doesn't send the user's locale to the server; translation is done by giving the client all the translation files and sending a specially designed message that instructs the client on how to build a translation.

minetest.get_player_information
lang_code = "fr", -- Language code used for translation

@flux Because this isn´t the first time.
I got no problem with being corrected but it would be nice if you would atleast check first.

apologies, i did check first, i just searched for "locale" and not "lang_code". also, the translation stuff does happen client side and not server side, though this would allow it to happen server side as well. seems the only place this is used in the server's codebase is when filtering (searching) items in unified inventory.

> > > the client info contains the selected language so its possible. > > > > the client doesn't send the user's locale to the server; translation is done by giving the client all the translation files and sending a specially designed message that instructs the client on how to build a translation. > > [minetest.get_player_information](https://github.com/minetest/minetest/blob/9d1ae80e89530e2d8883606cc35b7560edd37489/doc/lua_api.txt#L4984) > `lang_code = "fr", -- Language code used for translation` > > @flux Because this isn´t the first time. > I got no problem with being corrected but it would be nice if you would atleast check first. apologies, i did check first, i just searched for "locale" and not "lang_code". also, the translation stuff *does* happen client side and not server side, though this would allow it to happen server side as well. seems the only place this is used in the server's codebase is when filtering (searching) items in unified inventory.
AliasAlreadyTaken added this to the 1.1.119 milestone 2023-05-07 22:53:09 +00:00
AliasAlreadyTaken added the
4. step/ready to QA test
label 2023-05-07 22:53:17 +00:00
Member

/tag playerName farm (non-replanter)
/tag playerName language (watch for rude language)
/tag playerName watch (possible disrupter, cheater, etc. general watch them)

/tag playerName farm (non-replanter) /tag playerName language (watch for rude language) /tag playerName watch (possible disrupter, cheater, etc. general watch them)
AliasAlreadyTaken modified the milestone from 1.1.119 to 1.1.120 2023-05-15 23:12:53 +00:00
Member

I know I brought this up like 7 months ago... but it wasn't a good idea. Fresh starts are a trademark of YL and I like it that way. If someone can't get themselves banned outright, then we don't need to treat them like some sorta criminal?

This along with my /ignore idea are not my finest moments.

I know I brought this up like 7 months ago... but it wasn't a good idea. Fresh starts are a trademark of YL and I like it that way. If someone can't get themselves banned outright, then we don't need to treat them like some sorta criminal? This along with my /ignore idea are not my finest moments.

I like the ignore command, if it needs adjustment, we should discuss that in a separate issue.

I also like the tag command, it doesn't mean we'll use it for negative stuff entirely. To the contrary, all staff actions are meant to protect the herd, help the person and so on.

I like the ignore command, if it needs adjustment, we should discuss that in a separate issue. I also like the tag command, it doesn't mean we'll use it for negative stuff entirely. To the contrary, all staff actions are meant to protect the herd, help the person and so on.

I didnt suggest /tag just for negative stuff, that depends on what you use it for.

Base idea behind it was to give staff a simple helpful shared reminder/info tool.

/tag Bla has bones in lost&found
/tag Bla ask for repro to #bug
/tag Bla needs help with XYZ
/tag Bla birthday/first login today!
/tag Bla explain public farm replanting
/tag Bla knows great dirty jokes, just ask for one if you feel down
/tag Bla we fixed the bug/added his suggestion, ask to test it on testserver
/tag Bla might be able to help with XYZ
/tag Bla spams gitea with /tag examples
I didnt suggest /tag just for negative stuff, that depends on what you use it for. Base idea behind it was to give staff a simple helpful shared reminder/info tool. ``` /tag Bla has bones in lost&found /tag Bla ask for repro to #bug /tag Bla needs help with XYZ /tag Bla birthday/first login today! /tag Bla explain public farm replanting /tag Bla knows great dirty jokes, just ask for one if you feel down /tag Bla we fixed the bug/added his suggestion, ask to test it on testserver /tag Bla might be able to help with XYZ /tag Bla spams gitea with /tag examples ```
Member

i'd like to propose that certain commands automatically add a tag, e.g. granting/revoking privileges, jailing, kicking, and banning.

i'd like to propose that certain commands automatically add a tag, e.g. granting/revoking privileges, jailing, kicking, and banning.

The basic premise works, staff and bailiff can add, list and remove tags. Using yl_tags.add_player_tag(name, tag_message) we could tap into yl_tags and add stuff automatically.

The basic premise works, staff and bailiff can add, list and remove tags. Using `yl_tags.add_player_tag(name, tag_message) ` we could tap into yl_tags and add stuff automatically.
AliasAlreadyTaken added the
ugh/QA OK
label 2023-08-28 10:12:22 +00:00
flux added
5. result/fixed
and removed
4. step/ready to QA test
labels 2023-11-16 21:37:42 +00:00
AliasAlreadyTaken was unassigned by flux 2023-11-16 21:37:45 +00:00
Member

this is live

this is live
flux closed this issue 2023-11-16 21:37:55 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
7 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: your-land/bugtracker#4214
No description provided.