Packages
ex_gram
0.55.1
0.67.0
0.66.0
0.65.0
0.64.0
0.63.0
0.62.0
0.61.0
0.60.0
0.58.0
0.57.0
0.56.1
0.56.0
0.55.1
0.55.0
0.54.0
0.53.0
0.52.2
0.52.1
0.52.0
0.51.1
0.51.0
0.50.2
0.50.1
0.50.0
0.41.0
0.40.0
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.1
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.1
0.8.0
0.7.1
0.7.0
0.6.2
0.6.1
0.6.0
0.5.0
0.5.0-rc6
0.5.0-rc5
0.5.0-rc4
0.5.0-rc3
0.5.0-rc2
Telegram Bot API low level and framework
Current section
Files
Jump to
Current section
Files
lib/ex_gram/middleware/ignore_username.ex
defmodule ExGram.Middleware.IgnoreUsername do
@moduledoc """
Middleware that ignore the username in the command parameter.
`/command@bot_username` will be transformed to `/command` before handling the message
"""
use ExGram.Middleware
alias ExGram.Cnt
def call(%Cnt{bot_info: %{username: username}, update: %{message: %{text: t} = message} = update} = cnt, _opts)
when is_binary(username) and is_binary(t) do
new_text = clean_command(t, username)
new_msg = %{message | text: new_text}
new_update = %{update | message: new_msg}
%{cnt | update: new_update}
end
def call(cnt, _), do: cnt
defp clean_command("/" <> text, username) do
[raw_command | rest] = String.split(text, " ")
cmd =
case String.split(raw_command, "@") do
[command, ^username] -> "/" <> command
_ -> "/" <> raw_command
end
Enum.join([cmd | rest], " ")
end
defp clean_command(text, _username), do: text
end