///|
/// This object represents a forum topic.
pub struct ForumTopic {
message_thread_id : Int
name : String
icon_color : Int
icon_custom_emoji_id : String?
} derive(Show, Eq)
///|
/// Creates a new [ForumTopic].
pub fn ForumTopic::new(
message_thread_id~ : Int,
name~ : String,
icon_color~ : Int,
icon_custom_emoji_id? : String,
) -> ForumTopic {
{ message_thread_id, name, icon_color, icon_custom_emoji_id }
}
///|
pub impl ToJson for ForumTopic with to_json(self) {
let object : Map[String, Json] = {
"message_thread_id": self.message_thread_id.to_json(),
"name": self.name.to_json(),
"icon_color": self.icon_color.to_json(),
}
if self.icon_custom_emoji_id is Some(v) {
object["icon_custom_emoji_id"] = v.to_json()
}
object.to_json()
}
///|
pub impl @json.FromJson for ForumTopic with from_json(json, path) {
guard json is Object(object) else {
raise @json.JsonDecodeError((path, "Expected object for ForumTopic"))
}
let message_thread_id : Int = @json.from_json(
object["message_thread_id"],
path~,
)
let name : String = @json.from_json(object["name"], path~)
let icon_color : Int = @json.from_json(object["icon_color"], path~)
let icon_custom_emoji_id : String? = if object.get("icon_custom_emoji_id")
is Some(v) {
Some(@json.from_json(v, path~))
} else {
None
}
{ message_thread_id, name, icon_color, icon_custom_emoji_id }
}
///|
/// This object represents a service message about a new forum topic created in the chat.
pub struct ForumTopicCreated {
name : String
icon_color : Int
icon_custom_emoji_id : String?
} derive(Show, Eq)
///|
/// Creates a new [ForumTopicCreated].
pub fn ForumTopicCreated::new(
name~ : String,
icon_color~ : Int,
icon_custom_emoji_id? : String,
) -> ForumTopicCreated {
{ name, icon_color, icon_custom_emoji_id }
}
///|
pub impl ToJson for ForumTopicCreated with to_json(self) {
let object : Map[String, Json] = {
"name": self.name.to_json(),
"icon_color": self.icon_color.to_json(),
}
if self.icon_custom_emoji_id is Some(v) {
object["icon_custom_emoji_id"] = v.to_json()
}
object.to_json()
}
///|
pub impl @json.FromJson for ForumTopicCreated with from_json(json, path) {
guard json is Object(object) else {
raise @json.JsonDecodeError((path, "Expected object for ForumTopicCreated"))
}
let name : String = @json.from_json(object["name"], path~)
let icon_color : Int = @json.from_json(object["icon_color"], path~)
let icon_custom_emoji_id : String? = if object.get("icon_custom_emoji_id")
is Some(v) {
Some(@json.from_json(v, path~))
} else {
None
}
{ name, icon_color, icon_custom_emoji_id }
}
///|
/// This object represents a service message about an edited forum topic.
pub struct ForumTopicEdited {
name : String?
icon_custom_emoji_id : String?
} derive(Show, Eq)
///|
/// Creates a new [ForumTopicEdited].
pub fn ForumTopicEdited::new(
name? : String,
icon_custom_emoji_id? : String,
) -> ForumTopicEdited {
{ name, icon_custom_emoji_id }
}
///|
pub impl ToJson for ForumTopicEdited with to_json(self) {
let object : Map[String, Json] = {}
if self.name is Some(v) {
object["name"] = v.to_json()
}
if self.icon_custom_emoji_id is Some(v) {
object["icon_custom_emoji_id"] = v.to_json()
}
object.to_json()
}
///|
pub impl @json.FromJson for ForumTopicEdited with from_json(json, path) {
guard json is Object(object) else {
raise @json.JsonDecodeError((path, "Expected object for ForumTopicEdited"))
}
let name : String? = if object.get("name") is Some(v) {
Some(@json.from_json(v, path~))
} else {
None
}
let icon_custom_emoji_id : String? = if object.get("icon_custom_emoji_id")
is Some(v) {
Some(@json.from_json(v, path~))
} else {
None
}
{ name, icon_custom_emoji_id }
}