Add /setname command
I'm not sure about that replies check in handleStandardReply. If more of those are added the reply counter system will definitely need refactoring.weechat-hashes
parent
b4ed58602b
commit
1662b01a5f
10
catgirl.1
10
catgirl.1
|
@ -328,6 +328,9 @@ command is likely needed
|
|||
for command output.
|
||||
.It Ic /say Ar message
|
||||
Send a regular message.
|
||||
.It Ic /setname Ar name
|
||||
Update realname
|
||||
if supported by the server.
|
||||
.It Ic /topic Op Ar topic
|
||||
Show or set the topic of the channel.
|
||||
Press
|
||||
|
@ -735,6 +738,13 @@ ignore = * [JPQ][OAU][IR][NT] #example
|
|||
.Re
|
||||
.It
|
||||
.Rs
|
||||
.%A Janne Mareike Koschinski
|
||||
.%T IRCv3 setname Extension
|
||||
.%I IRCv3 Working Group
|
||||
.%U https://ircv3.net/specs/extensions/setname
|
||||
.Re
|
||||
.It
|
||||
.Rs
|
||||
.%A Mantas Mikul\[u0117]nas
|
||||
.%T IRCv3.2 userhost-in-names Extension
|
||||
.%I IRCv3 Working Group
|
||||
|
|
2
chat.h
2
chat.h
|
@ -171,6 +171,7 @@ extern struct Network {
|
|||
X("multi-prefix", CapMultiPrefix) \
|
||||
X("sasl", CapSASL) \
|
||||
X("server-time", CapServerTime) \
|
||||
X("setname", CapSetname) \
|
||||
X("userhost-in-names", CapUserhostInNames)
|
||||
|
||||
enum Cap {
|
||||
|
@ -256,6 +257,7 @@ extern struct Replies {
|
|||
uint list;
|
||||
uint mode;
|
||||
uint names;
|
||||
uint setname;
|
||||
uint topic;
|
||||
uint who;
|
||||
uint whois;
|
||||
|
|
|
@ -159,6 +159,13 @@ static void commandAway(uint id, char *params) {
|
|||
replies.away++;
|
||||
}
|
||||
|
||||
static void commandSetname(uint id, char *params) {
|
||||
(void)id;
|
||||
if (!params) return;
|
||||
ircFormat("SETNAME :%s\r\n", params);
|
||||
replies.setname++;
|
||||
}
|
||||
|
||||
static void commandTopic(uint id, char *params) {
|
||||
if (params) {
|
||||
ircFormat("TOPIC %s :%s\r\n", idNames[id], params);
|
||||
|
@ -486,6 +493,7 @@ static const struct Handler {
|
|||
{ "/quit", commandQuit, 0 },
|
||||
{ "/quote", commandQuote, Multiline | Restricted },
|
||||
{ "/say", commandPrivmsg, Multiline },
|
||||
{ "/setname", commandSetname, 0 },
|
||||
{ "/topic", commandTopic, 0 },
|
||||
{ "/unban", commandUnban, 0 },
|
||||
{ "/unexcept", commandUnexcept, 0 },
|
||||
|
|
16
handle.c
16
handle.c
|
@ -97,6 +97,10 @@ typedef void Handler(struct Message *msg);
|
|||
|
||||
static void handleStandardReply(struct Message *msg) {
|
||||
require(msg, false, 3);
|
||||
if (!strcmp(msg->params[0], "SETNAME")) {
|
||||
if (!replies.setname) return;
|
||||
replies.setname--;
|
||||
}
|
||||
for (uint i = 2; i < ParamCap - 1; ++i) {
|
||||
if (msg->params[i + 1]) continue;
|
||||
uiFormat(
|
||||
|
@ -1150,6 +1154,17 @@ static void handleReplyNowAway(struct Message *msg) {
|
|||
replies.away--;
|
||||
}
|
||||
|
||||
static void handleSetname(struct Message *msg) {
|
||||
require(msg, true, 1);
|
||||
if (!replies.setname) return;
|
||||
if (strcmp(msg->nick, self.nick)) return;
|
||||
uiFormat(
|
||||
Network, Warm, tagTime(msg),
|
||||
"You update your name tag: %s", msg->params[0]
|
||||
);
|
||||
replies.setname--;
|
||||
}
|
||||
|
||||
static bool isAction(struct Message *msg) {
|
||||
if (strncmp(msg->params[1], "\1ACTION ", 8)) return false;
|
||||
msg->params[1] += 8;
|
||||
|
@ -1343,6 +1358,7 @@ static const struct Handler {
|
|||
{ "PING", handlePing },
|
||||
{ "PRIVMSG", handlePrivmsg },
|
||||
{ "QUIT", handleQuit },
|
||||
{ "SETNAME", handleSetname },
|
||||
{ "TOPIC", handleTopic },
|
||||
{ "WARN", handleStandardReply },
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue