@tool
extends TwitchData

# CLASS GOT AUTOGENERATED DON'T CHANGE MANUALLY. CHANGES CAN BE OVERWRITTEN EASILY.

class_name TwitchUpdateChatSettings



##
## #/components/schemas/UpdateChatSettingsBody
class Body extends TwitchData:

	## A Boolean value that determines whether chat messages must contain only emotes.
	##
	## Set to **true** if only emotes are allowed; otherwise, **false**. The default is **false**.
	@export var emote_mode: bool:
		set(val):
			emote_mode = val
			track_data(&"emote_mode", val)

	## A Boolean value that determines whether the broadcaster restricts the chat room to followers only.
	##
	## Set to **true** if the broadcaster restricts the chat room to followers only; otherwise, **false**. The default is **true**.
	##
	## To specify how long users must follow the broadcaster before being able to participate in the chat room, see the `follower_mode_duration` field.
	@export var follower_mode: bool:
		set(val):
			follower_mode = val
			track_data(&"follower_mode", val)

	## The length of time, in minutes, that users must follow the broadcaster before being able to participate in the chat room. Set only if `follower_mode` is **true**. Possible values are: 0 (no restriction) through 129600 (3 months). The default is 0.
	@export var follower_mode_duration: int:
		set(val):
			follower_mode_duration = val
			track_data(&"follower_mode_duration", val)

	## A Boolean value that determines whether the broadcaster adds a short delay before chat messages appear in the chat room. This gives chat moderators and bots a chance to remove them before viewers can see the message.
	##
	## Set to **true** if the broadcaster applies a delay; otherwise, **false**. The default is **false**.
	##
	## To specify the length of the delay, see the `non_moderator_chat_delay_duration` field.
	@export var non_moderator_chat_delay: bool:
		set(val):
			non_moderator_chat_delay = val
			track_data(&"non_moderator_chat_delay", val)

	## The amount of time, in seconds, that messages are delayed before appearing in chat. Set only if `non_moderator_chat_delay` is **true**. Possible values are:
	##
	## * 2 — 2 second delay (recommended)
	## * 4 — 4 second delay
	## * 6 — 6 second delay
	@export var non_moderator_chat_delay_duration: int:
		set(val):
			non_moderator_chat_delay_duration = val
			track_data(&"non_moderator_chat_delay_duration", val)

	## A Boolean value that determines whether the broadcaster limits how often users in the chat room are allowed to send messages. Set to **true** if the broadcaster applies a wait period between messages; otherwise, **false**. The default is **false**.
	##
	## To specify the delay, see the `slow_mode_wait_time` field.
	@export var slow_mode: bool:
		set(val):
			slow_mode = val
			track_data(&"slow_mode", val)

	## The amount of time, in seconds, that users must wait between sending messages. Set only if `slow_mode` is **true**.
	##
	## Possible values are: 3 (3 second delay) through 120 (2 minute delay). The default is 30 seconds.
	@export var slow_mode_wait_time: int:
		set(val):
			slow_mode_wait_time = val
			track_data(&"slow_mode_wait_time", val)

	## A Boolean value that determines whether only users that subscribe to the broadcaster’s channel may talk in the chat room.
	##
	## Set to **true** if the broadcaster restricts the chat room to subscribers only; otherwise, **false**. The default is **false**.
	@export var subscriber_mode: bool:
		set(val):
			subscriber_mode = val
			track_data(&"subscriber_mode", val)

	## A Boolean value that determines whether the broadcaster requires users to post only unique messages in the chat room.
	##
	## Set to **true** if the broadcaster allows only unique messages; otherwise, **false**. The default is **false**.
	@export var unique_chat_mode: bool:
		set(val):
			unique_chat_mode = val
			track_data(&"unique_chat_mode", val)
	var response: BufferedHTTPClient.ResponseData


	## Constructor with all required fields.
	static func create() -> Body:
		var body: Body = Body.new()
		return body


	static func from_json(d: Dictionary) -> Body:
		var result: Body = Body.new()
		if d.get("emote_mode", null) != null:
			result.emote_mode = d["emote_mode"]
		if d.get("follower_mode", null) != null:
			result.follower_mode = d["follower_mode"]
		if d.get("follower_mode_duration", null) != null:
			result.follower_mode_duration = d["follower_mode_duration"]
		if d.get("non_moderator_chat_delay", null) != null:
			result.non_moderator_chat_delay = d["non_moderator_chat_delay"]
		if d.get("non_moderator_chat_delay_duration", null) != null:
			result.non_moderator_chat_delay_duration = d["non_moderator_chat_delay_duration"]
		if d.get("slow_mode", null) != null:
			result.slow_mode = d["slow_mode"]
		if d.get("slow_mode_wait_time", null) != null:
			result.slow_mode_wait_time = d["slow_mode_wait_time"]
		if d.get("subscriber_mode", null) != null:
			result.subscriber_mode = d["subscriber_mode"]
		if d.get("unique_chat_mode", null) != null:
			result.unique_chat_mode = d["unique_chat_mode"]
		return result



##
## #/components/schemas/UpdateChatSettingsResponse
class Response extends TwitchData:

	## The list of chat settings. The list contains a single object with all the settings.
	@export var data: Array[TwitchChatSettingsUpdated]:
		set(val):
			data = val
			track_data(&"data", val)
	var response: BufferedHTTPClient.ResponseData


	## Constructor with all required fields.
	static func create(_data: Array[TwitchChatSettingsUpdated]) -> Response:
		var response: Response = Response.new()
		response.data = _data
		return response


	static func from_json(d: Dictionary) -> Response:
		var result: Response = Response.new()
		if d.get("data", null) != null:
			for value in d["data"]:
				result.data.append(TwitchChatSettingsUpdated.from_json(value))
		return result
