Mirror of github.com/gissleh/irc
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
854 B

  1. package irc
  2. import (
  3. "git.aiterp.net/gisle/irc/list"
  4. )
  5. // A Query is a target for direct messages to and from a specific nick.
  6. type Query struct {
  7. user list.User
  8. }
  9. // Kind returns "channel"
  10. func (query *Query) Kind() string {
  11. return "query"
  12. }
  13. // Name gets the query name
  14. func (query *Query) Name() string {
  15. return query.user.Nick
  16. }
  17. // Handle handles messages routed to this channel by the client's event loop
  18. func (query *Query) Handle(event *Event, client *Client) {
  19. switch event.Name() {
  20. case "packet.nick":
  21. {
  22. query.user.Nick = event.Arg(0)
  23. }
  24. case "packet.account":
  25. {
  26. account := ""
  27. if accountArg := event.Arg(0); accountArg != "" && accountArg != "*" {
  28. account = accountArg
  29. }
  30. query.user.Account = account
  31. }
  32. case "packet.chghost":
  33. {
  34. query.user.User = event.Arg(0)
  35. query.user.Host = event.Arg(1)
  36. }
  37. }
  38. }