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

View File

@ -1,2 +1,2 @@
{{> ../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",
QUIT: "quit",
CTCP: "ctcp",
CTCP_REQUEST: "ctcp_request",
CHGHOST: "chghost",
TOPIC: "topic",
TOPIC_SET_BY: "topic_set_by",

View File

@ -1,7 +1,9 @@
"use strict";
const _ = require("lodash");
const Helper = require("../../helper");
const Msg = require("../../models/msg");
const User = require("../../models/user");
const pkg = require("../../../package.json");
const ctcpResponses = {
@ -16,29 +18,40 @@ const ctcpResponses = {
module.exports = function(irc, network) {
const client = this;
const lobby = network.channels[0];
irc.on("ctcp response", function(data) {
let chan = network.getChannel(data.nick);
if (typeof chan === "undefined") {
chan = network.channels[0];
chan = lobby;
}
const msg = new Msg({
type: Msg.Type.CTCP,
time: data.time,
from: chan.getUser(data.nick),
ctcpType: data.type,
ctcpMessage: data.message,
});
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];
if (response) {
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}));
};