Fix: Fixed a bug where rellaymsg from a user with a nick with special chars or a special font would not send over to the IRC side.

This commit is contained in:
2025-10-03 22:41:38 +02:00
parent 20060d1130
commit efa1ec235c

33
bot.js
View File

@@ -39,6 +39,11 @@ function logForward(...args) {
if (LOG_FORWARD) console.log(...args);
}
// Utility to check ASCII
function isASCII(str) {
return /^[\x00-\x7F]*$/.test(str);
}
// Create IRC client for a bridge
function createIRCClient(bridge) {
const ircConfig = bridge.irc;
@@ -206,22 +211,18 @@ discordClient.on("messageCreate", async (message) => {
logForward(`Forwarding Discord → IRC [${info.channel}]: ${privmsgMessage}`);
// --- RELAYMSG logic ---
if (info.useRelayMsg) {
if (ircClient.state.hasOp) {
const relayNick = `${nickname}/dc`;
ircClient.raw(`RELAYMSG ${info.channel} ${relayNick} :${baseMessage}`);
} else {
if (!ircClient.state.warnedRelayMsg) {
ircClient.say(
info.channel,
`[Bridge] Missing +o, falling back to PRIVMSG (RELAYMSG disabled)`
);
ircClient.state.warnedRelayMsg = true;
}
ircClient.say(info.channel, privmsgMessage);
}
// RELAYMSG logic with proper fallback for non-ASCII
if (info.useRelayMsg && ircClient.state.hasOp && isASCII(nickname)) {
const relayNick = `${nickname}/dc`;
ircClient.raw(`RELAYMSG ${info.channel} ${relayNick} :${baseMessage}`);
} else {
if (info.useRelayMsg && !ircClient.state.hasOp && !ircClient.state.warnedRelayMsg) {
ircClient.say(
info.channel,
`[Bridge] Missing +o, falling back to PRIVMSG (RELAYMSG disabled)`
);
ircClient.state.warnedRelayMsg = true;
}
ircClient.say(info.channel, privmsgMessage);
}
}
@@ -256,7 +257,7 @@ discordClient.on("messageReactionAdd", async (reaction, user) => {
logForward(`Reaction → IRC [${info.channel}]: ${reactionMessage}`);
if (info.useRelayMsg && ircClient.state.hasOp) {
if (info.useRelayMsg && ircClient.state.hasOp && isASCII(nickname)) {
const relayNick = `${nickname}/dc`;
ircClient.raw(
`RELAYMSG ${info.channel} ${relayNick} :${reactionMessage}`