Skip to content

Latest commit

 

History

History
58 lines (42 loc) · 1.74 KB

reply.asc

File metadata and controls

58 lines (42 loc) · 1.74 KB

回复

服务器想要回复消息给用户的话,需要一个 telegram bot api 的 elixir 库,因为所需功能非常少,所以这里就用我以前写的一个简单的 TelegramBot 库。

mix.exs 文件 deps 中新增 {:telegram_bot, "~> 1.0.1}

+      {:telegram_bot, "~> 1.0.1"}
     ]

接着在命令行下运行 mix deps.get 安装 telegram_bot 依赖。

sendMessage

TwitterControllerindex 动作在接收到 telegram 消息后,需要调用 telegram_bot 提供的 sendMessage 方法,回复消息给用户。

但我们需要先配置 telegram 的 token,打开 dev.exs 文件,在文件末尾新增内容如下:

/config/dev.exs
# Configures token for telegram bot
config :telegram_bot,
  token: System.get_env("TELEGRAM_TOKEN")

这样,telegram token 就可以从环境变量中读取。

命令行下配置 TELEGRAM_TOKEN 环境变量:

$ export TELEGRAM_TOKEN=TOKEN_D

注意,调整 dev.exs 后需要重启 Phoenix 服务器。

Warning
因为 telegram 被墙,所以我还需要给终端设置代理,telegram_bot API 会自动读取环境变量中的代理设置。

回复“你好”

上述准备工作完成后,就可以调整 twitter_controller.ex 中的代码:

 defmodule TweetBotWeb.TwitterController do
   use TweetBotWeb, :controller

+  import TelegramBot
+
   def index(conn, %{"message" => %{"from" => %{"id" => from_id}, "text" => text}}) do
+    sendMessage(from_id, "你好")
     json conn, %{}
   end
 end

现在给测试用的发推机器人发送任何消息,都会收到“你好”的回复。