接着建立登入功能
在流程控制这边追加 login 功能
controller\flowController.js
const viewPrinter = require("../view/viewPrinter");
const telegramItem = require("../interface/telegramItem");
const GetInstanceClass = require("../component/GetInstanceClass");
class FlowController extends GetInstanceClass {
constructor() {
super();
}
/**
* @description 起始画面
*
* @memberof FlowController
*/
async start() {
await viewPrinter.welcome();
this.mainMenu();
}
/**
* @description 主要选单
*
* @memberof FlowController
*/
async mainMenu() {
let selectOption = await viewPrinter.mainMenu();
switch (selectOption) {
case "登入":
this.loginTelegram();
break;
case "离开":
this.leaveApp();
break;
default:
break;
}
}
/**
* @description 登入 telegram
*
* @memberof FlowController
*/
async loginTelegram() {
await telegramItem.login();
this.mainMenu();
}
/**
* @description 离开应用程序
*
* @memberof FlowController
*/
async leaveApp() {
viewPrinter.clearView();
console.log("按 任意键 离开程序");
await viewPrinter.pressToContinue();
process.exit();
}
}
let flowController = FlowController.getInstance();
module.exports = flowController;
然後telegram建立登入功能
interface\telegramItem.js
const { TelegramClient } = require("telegram");
const { StringSession } = require("telegram/sessions");
const { Logger } = require("telegram/extensions");
const input = require("input");
const GetInstanceClass = require("../component/GetInstanceClass");
Logger.setLevel("none"); // 这边可以隐藏很多关於 telegram 的运作细节
class TelegramItem extends GetInstanceClass {
constructor() {
super();
this.client = null;
}
/**
* @description 初始化 telegram 实体
*
* @memberof TelegramItem
*/
init() {
this.client = new TelegramClient(
new StringSession(""),
Number(process.env.telegramId), // 这边输入你的 id
process.env.telegramHash, // 输入你的 hash
{ connectionRetries: 5 }
);
}
/**
* @description 登入 telegram
*
* @return {*}
* @memberof TelegramClass
*/
async login() {
await this.client.start({
phoneNumber: async () => await input.text("请输入电话?"),
password: async () => await input.text("请输入密码?"),
phoneCode: async () => await input.text("请输入验证码?"),
onError: (err) => console.log("错误讯息 : " + err.errorMessage),
});
// console.log(); // Save this string to avoid logging in again
console.log("");
console.log("\x1b[36m", "成功登入");
console.log("");
this.client.session.save();
await this.client.sendMessage("me", {
message: "node sevret is online! " + new Date().toLocaleString(),
});
return true;
}
}
const telegramItem = TelegramItem.getInstance();
telegramItem.init();
module.exports = telegramItem;
<<: 【Day23】[演算法]-插入排序法Insertion Sort
案例说明及适用场景 客户往来记录,属於商机管理的一环,一个客户不见得袛有一次商机,而一个商机的完成必...
终於到了我们的元件篇啦!!! 今天是第一个元件,所以稍微简单一点。 我们要来做下载的进度条~ 前置...
接下来的几篇,我们来看看网路中的协议到底规范了哪些东西,为什麽要有这些规则?又有何优缺点? 首先来看...
简述音乐情绪模型 看完了昨天的介绍之後,我们知道音乐跟情绪是有相关且可以被分类的,而把这其中关系模型...
前言 我们目前完成了两个工作表的制作,再来就是要学习如何让多个工作表可以一起互动,而仪表板的功能就是...