mirror of
https://github.com/IllusionMan1212/gorc.git
synced 2026-10-24 02:12:33 +00:00
feat: implement TOPIC-related commands and replies
This commit is contained in:
@@ -187,8 +187,8 @@ const (
|
|||||||
RPL_CHANNELMODEIS = "324" // RFC1459 - Not Implemented (TODO:)
|
RPL_CHANNELMODEIS = "324" // RFC1459 - Not Implemented (TODO:)
|
||||||
RPL_UNIQOPIS = "325" // RFC2812 - Not Implemented - Has Conflicts (TODO:)
|
RPL_UNIQOPIS = "325" // RFC2812 - Not Implemented - Has Conflicts (TODO:)
|
||||||
RPL_CREATIONTIME = "329" // Bahamut,InspIRCd - Not Implemented (TODO:)
|
RPL_CREATIONTIME = "329" // Bahamut,InspIRCd - Not Implemented (TODO:)
|
||||||
RPL_NOTOPIC = "331" // RFC1459 - Not Implemented (TODO:)
|
RPL_NOTOPIC = "331" // RFC1459 - Implemented
|
||||||
RPL_TOPIC = "332" // RFC1459 - Not Implemented (TODO:)
|
RPL_TOPIC = "332" // RFC1459 - Implemented
|
||||||
RPL_TOPICWHOTIME = "333" // ircu,InspIRCd - Not Implemented (TODO:)
|
RPL_TOPICWHOTIME = "333" // ircu,InspIRCd - Not Implemented (TODO:)
|
||||||
RPL_INVITING = "341" // RFC1459 - Not Implemented (TODO:)
|
RPL_INVITING = "341" // RFC1459 - Not Implemented (TODO:)
|
||||||
RPL_SUMMONING = "342" // RFC1459 - Not Implemented - Deprecated (TODO:)
|
RPL_SUMMONING = "342" // RFC1459 - Not Implemented - Deprecated (TODO:)
|
||||||
|
|||||||
@@ -171,6 +171,22 @@ func handlePart(msg parser.IRCMessage, client *irc.Client) {
|
|||||||
client.Tea.Send(cmds.SwitchChannels())
|
client.Tea.Send(cmds.SwitchChannels())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func handleTopic(msg parser.IRCMessage, client *irc.Client) {
|
||||||
|
channel := msg.Parameters[0]
|
||||||
|
topic := msg.Parameters[1]
|
||||||
|
|
||||||
|
msgOpts := irc.MsgFmtOpts{
|
||||||
|
AsServerMsg: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, c := range client.Channels {
|
||||||
|
if c.Name == channel {
|
||||||
|
client.Channels[i].Topic = topic
|
||||||
|
client.Channels[i].AppendMsg(msg.Timestamp, fmt.Sprintf("Topic changed: %v", topic), msgOpts)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func handleCAP(msg parser.IRCMessage, client *irc.Client) {
|
func handleCAP(msg parser.IRCMessage, client *irc.Client) {
|
||||||
switch msg.Parameters[1] {
|
switch msg.Parameters[1] {
|
||||||
case "LIST":
|
case "LIST":
|
||||||
@@ -465,6 +481,37 @@ func handleWHOISCHANNELS(msg parser.IRCMessage, client *irc.Client) {
|
|||||||
client.Channels[0].AppendMsg(msg.Timestamp, message, msgOpts)
|
client.Channels[0].AppendMsg(msg.Timestamp, message, msgOpts)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func handleNOTOPIC(msg parser.IRCMessage, client *irc.Client) {
|
||||||
|
channel := msg.Parameters[1]
|
||||||
|
msgStr := msg.Parameters[2]
|
||||||
|
|
||||||
|
msgOpts := irc.MsgFmtOpts{
|
||||||
|
AsServerMsg: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, c := range client.Channels {
|
||||||
|
if c.Name == channel {
|
||||||
|
client.Channels[i].AppendMsg(msg.Timestamp, msgStr, msgOpts)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleTOPIC(msg parser.IRCMessage, client *irc.Client) {
|
||||||
|
channel := msg.Parameters[1]
|
||||||
|
topic := msg.Parameters[2]
|
||||||
|
|
||||||
|
msgOpts := irc.MsgFmtOpts{
|
||||||
|
AsServerMsg: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, c := range client.Channels {
|
||||||
|
if c.Name == channel {
|
||||||
|
client.Channels[i].Topic = topic
|
||||||
|
client.Channels[i].AppendMsg(msg.Timestamp, fmt.Sprintf("TOPIC: %v", topic), msgOpts)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func handleNAMREPLY(msg parser.IRCMessage, client *irc.Client) {
|
func handleNAMREPLY(msg parser.IRCMessage, client *irc.Client) {
|
||||||
// TODO: do i need these
|
// TODO: do i need these
|
||||||
// client := msg.Parameters[0]
|
// client := msg.Parameters[0]
|
||||||
@@ -607,6 +654,8 @@ func HandleCommand(msg parser.IRCMessage, client *irc.Client) {
|
|||||||
handleQuit(msg, client)
|
handleQuit(msg, client)
|
||||||
case commands.PART:
|
case commands.PART:
|
||||||
handlePart(msg, client)
|
handlePart(msg, client)
|
||||||
|
case commands.TOPIC:
|
||||||
|
handleTopic(msg, client)
|
||||||
case commands.CAP:
|
case commands.CAP:
|
||||||
handleCAP(msg, client)
|
handleCAP(msg, client)
|
||||||
case commands.RPL_WELCOME:
|
case commands.RPL_WELCOME:
|
||||||
@@ -641,6 +690,10 @@ func HandleCommand(msg parser.IRCMessage, client *irc.Client) {
|
|||||||
handleENDOFWHOIS(msg, client)
|
handleENDOFWHOIS(msg, client)
|
||||||
case commands.RPL_WHOISCHANNELS:
|
case commands.RPL_WHOISCHANNELS:
|
||||||
handleWHOISCHANNELS(msg, client)
|
handleWHOISCHANNELS(msg, client)
|
||||||
|
case commands.RPL_NOTOPIC:
|
||||||
|
handleNOTOPIC(msg, client)
|
||||||
|
case commands.RPL_TOPIC:
|
||||||
|
handleTOPIC(msg, client)
|
||||||
case commands.RPL_NAMREPLY:
|
case commands.RPL_NAMREPLY:
|
||||||
handleNAMREPLY(msg, client)
|
handleNAMREPLY(msg, client)
|
||||||
case commands.RPL_ENDOFNAMES:
|
case commands.RPL_ENDOFNAMES:
|
||||||
|
|||||||
Reference in New Issue
Block a user