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.

58 lines
1.1 KiB

package irc
import (
"github.com/gissleh/irc/list"
)
// A Query is a target for direct messages to and from a specific nick.
type Query struct {
id string
user list.User
}
// ID returns a unique ID for the channel target.
func (query *Query) ID() string {
return query.id
}
// Kind returns "channel"
func (query *Query) Kind() string {
return "query"
}
// Name gets the query name
func (query *Query) Name() string {
return query.user.Nick
}
func (query *Query) State() ClientStateTarget {
return ClientStateTarget{
Kind: "query",
Name: query.user.Nick,
Users: []list.User{query.user},
}
}
// AddHandler handles messages routed to this channel by the client's event loop
func (query *Query) Handle(event *Event, client *Client) {
switch event.Name() {
case "packet.nick":
{
query.user.Nick = event.Arg(0)
}
case "packet.account":
{
account := ""
if accountArg := event.Arg(0); accountArg != "" && accountArg != "*" {
account = accountArg
}
query.user.Account = account
}
case "packet.chghost":
{
query.user.User = event.Arg(0)
query.user.Host = event.Arg(1)
}
}
}