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.

52 lines
1003 B

  1. package irc
  2. import (
  3. "github.com/gissleh/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. func (query *Query) State() TargetState {
  18. return TargetState{
  19. Kind: "query",
  20. Name: query.user.Nick,
  21. Users: []list.User{query.user},
  22. }
  23. }
  24. // AddHandler handles messages routed to this channel by the client's event loop
  25. func (query *Query) Handle(event *Event, client *Client) {
  26. switch event.Name() {
  27. case "packet.nick":
  28. {
  29. query.user.Nick = event.Arg(0)
  30. }
  31. case "packet.account":
  32. {
  33. account := ""
  34. if accountArg := event.Arg(0); accountArg != "" && accountArg != "*" {
  35. account = accountArg
  36. }
  37. query.user.Account = account
  38. }
  39. case "packet.chghost":
  40. {
  41. query.user.User = event.Arg(0)
  42. query.user.Host = event.Arg(1)
  43. }
  44. }
  45. }