privmsg.rs 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. use chrono::Utc;
  2. use rand::{rngs::OsRng, RngCore};
  3. use darkfi::serial::{SerialDecodable, SerialEncodable};
  4. pub type PrivmsgId = u64;
  5. #[derive(Debug, Clone, SerialEncodable, SerialDecodable, Eq, PartialEq)]
  6. pub struct Privmsg {
  7. pub id: PrivmsgId,
  8. pub nickname: String,
  9. pub target: String,
  10. pub message: String,
  11. pub timestamp: i64,
  12. pub term: u64,
  13. pub read_confirms: u8,
  14. }
  15. impl Privmsg {
  16. pub fn new(nickname: &str, target: &str, message: &str, term: u64) -> Self {
  17. let id = OsRng.next_u64();
  18. let timestamp = Utc::now().timestamp();
  19. let read_confirms = 0;
  20. Self {
  21. id,
  22. nickname: nickname.to_string(),
  23. target: target.to_string(),
  24. message: message.to_string(),
  25. timestamp,
  26. term,
  27. read_confirms,
  28. }
  29. }
  30. }
  31. impl std::string::ToString for Privmsg {
  32. fn to_string(&self) -> String {
  33. format!(":{}!anon@dark.fi PRIVMSG {} :{}\r\n", self.nickname, self.target, self.message)
  34. }
  35. }