From d56c0bf75c9ff2f3ad7b1eed8f9370a8cb159ac6 Mon Sep 17 00:00:00 2001 From: Alek Ratzloff Date: Thu, 2 Jul 2020 17:23:29 -0700 Subject: [PATCH] Update wordbot leaderboard and scoreboard to use "denotified" nicks Nicknames that are sent by wordbot for the leaderboard command and the end-of-game scoreboard are split up by zero-width space characters, to avoid pinging the users at random times. Signed-off-by: Alek Ratzloff --- lib/contrib/wordbot/bot.ex | 6 +++--- lib/util.ex | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/contrib/wordbot/bot.ex b/lib/contrib/wordbot/bot.ex index 1c585ce..10b8761 100644 --- a/lib/contrib/wordbot/bot.ex +++ b/lib/contrib/wordbot/bot.ex @@ -2,7 +2,7 @@ defmodule Omnibot.Contrib.Wordbot.Bot do use Omnibot.Module.Base use Omnibot.Module.GenServer - alias Omnibot.{Contrib.Wordbot, Irc, State} + alias Omnibot.{Contrib.Wordbot, Irc, State, Util} require Logger @split_pattern ~r/[\s\b]+/ @@ -15,7 +15,7 @@ defmodule Omnibot.Contrib.Wordbot.Bot do |> Enum.reverse() |> Enum.take(5) |> Enum.with_index() - |> Enum.map(fn {%{user: nick, score: score}, rank} -> "#{rank + 1}. #{nick}. #{score}" end) + |> Enum.map(fn {%{user: nick, score: score}, rank} -> "#{rank + 1}. #{Util.denotify_nick(nick)}. #{score}" end) |> Enum.each(&Irc.send_to(irc, channel, &1)) end @@ -121,7 +121,7 @@ defmodule Omnibot.Contrib.Wordbot.Bot do |> Map.new() |> IO.inspect() - Enum.each(scores, &Irc.send_to(irc, channel, "#{rankings[&1.score] + 1}. #{&1.user}. #{&1.score}")) + Enum.each(scores, &Irc.send_to(irc, channel, "#{rankings[&1.score] + 1}. #{Util.denotify_nick(&1.user)}. #{&1.score}")) # Stop the watcher, start new round delete_watcher(channel) diff --git a/lib/util.ex b/lib/util.ex index 861bddd..af710e6 100644 --- a/lib/util.ex +++ b/lib/util.ex @@ -12,6 +12,6 @@ defmodule Omnibot.Util do create a notification for that user. """ def denotify_nick(nick) do - Enum.join(nick, "\u200b") + String.graphemes(nick) |> Enum.join("\u200b") end end