Merge pull request #1930 from thelounge/astorije/ctcp-request

Let user know someone is making a CTCP request against their nick
This commit is contained in:
Pavel Djundik 2018-02-27 13:15:27 +02:00 committed by GitHub
commit 59ec0348b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 25 additions and 6 deletions

View File

@ -236,6 +236,7 @@ kbd {
#chat .topic .from::before, #chat .topic .from::before,
#chat .mode .from::before, #chat .mode .from::before,
#chat .ctcp .from::before, #chat .ctcp .from::before,
#chat .ctcp_request .from::before,
#chat .whois .from::before, #chat .whois .from::before,
#chat .nick .from::before, #chat .nick .from::before,
#chat .action .from::before, #chat .action .from::before,
@ -351,7 +352,8 @@ kbd {
color: #2ecc40; color: #2ecc40;
} }
#chat .ctcp .from::before { #chat .ctcp .from::before,
#chat .ctcp_request .from::before {
content: "\f0f6"; /* http://fontawesome.io/icon/file-text-o/ */ content: "\f0f6"; /* http://fontawesome.io/icon/file-text-o/ */
} }

View File

@ -1,2 +1,2 @@
{{> ../user_name from}} {{> ../user_name from}}
<b>{{ctcpType}}</b> <span class="ctcp-message">{{{parse ctcpMessage}}}</span> <span class="ctcp-message">{{{parse ctcpMessage}}}</span>

View File

@ -0,0 +1,3 @@
{{> ../user_name from}}
sent a <abbr title="Client-to-client_protocol">CTCP</abbr> request:
<span class="ctcp-message">{{{parse ctcpMessage}}}</span>

View File

@ -62,6 +62,7 @@ Msg.Type = {
PART: "part", PART: "part",
QUIT: "quit", QUIT: "quit",
CTCP: "ctcp", CTCP: "ctcp",
CTCP_REQUEST: "ctcp_request",
CHGHOST: "chghost", CHGHOST: "chghost",
TOPIC: "topic", TOPIC: "topic",
TOPIC_SET_BY: "topic_set_by", TOPIC_SET_BY: "topic_set_by",

View File

@ -1,7 +1,9 @@
"use strict"; "use strict";
const _ = require("lodash");
const Helper = require("../../helper"); const Helper = require("../../helper");
const Msg = require("../../models/msg"); const Msg = require("../../models/msg");
const User = require("../../models/user");
const pkg = require("../../../package.json"); const pkg = require("../../../package.json");
const ctcpResponses = { const ctcpResponses = {
@ -16,29 +18,40 @@ const ctcpResponses = {
module.exports = function(irc, network) { module.exports = function(irc, network) {
const client = this; const client = this;
const lobby = network.channels[0];
irc.on("ctcp response", function(data) { irc.on("ctcp response", function(data) {
let chan = network.getChannel(data.nick); let chan = network.getChannel(data.nick);
if (typeof chan === "undefined") { if (typeof chan === "undefined") {
chan = network.channels[0]; chan = lobby;
} }
const msg = new Msg({ const msg = new Msg({
type: Msg.Type.CTCP, type: Msg.Type.CTCP,
time: data.time, time: data.time,
from: chan.getUser(data.nick), from: chan.getUser(data.nick),
ctcpType: data.type,
ctcpMessage: data.message, ctcpMessage: data.message,
}); });
chan.pushMessage(client, msg); chan.pushMessage(client, msg);
}); });
irc.on("ctcp request", (data) => { // Limit requests to a rate of one per second max
irc.on("ctcp request", _.throttle((data) => {
const response = ctcpResponses[data.type]; const response = ctcpResponses[data.type];
if (response) { if (response) {
irc.ctcpResponse(data.nick, data.type, response(data)); irc.ctcpResponse(data.nick, data.type, response(data));
} }
});
// Let user know someone is making a CTCP request against their nick
const msg = new Msg({
type: Msg.Type.CTCP_REQUEST,
time: data.time,
from: new User({nick: data.nick}),
hostmask: data.ident + "@" + data.hostname,
ctcpMessage: data.message,
});
lobby.pushMessage(client, msg);
}, 1000, {trailing: false}));
}; };