app.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. //@flow
  2. const moment = require("moment");
  3. const cmdRegistry = require("../commandRegistry");
  4. const telegraf = require("../telegraf");
  5. const Extra = require('telegraf/extra');
  6. const Markup = require('telegraf/markup');
  7. const db = require("../db");
  8. const ie = require("../utils/internalError")("bot/app");
  9. function app() {
  10. if (telegraf.bot == null) {
  11. throw new Error("Bot uninitialized");
  12. }
  13. telegraf.bot.hears(/✔️\[(\d+)\] [\w ]+/, async (ctx) => {
  14. try {
  15. let id = ctx.match[1];
  16. let app = await db.App.findById(id);
  17. await app.update({
  18. activated: true
  19. })
  20. ctx.reply(`${app.name} accepted`);
  21. } catch (e) {
  22. ie(1);
  23. }
  24. });
  25. telegraf.bot.hears(/❌\[(\d+)\] [\w ]+/, async (ctx) => {
  26. try {
  27. let id = ctx.match[1];
  28. let app = await db.App.findById(id);
  29. await app.destroy();
  30. ctx.reply(`${app.name} deleted`);
  31. } catch (e) {
  32. ie(2);
  33. }
  34. });
  35. cmdRegistry.register("pendingApps", async (ctx) => {
  36. try {
  37. let pendingApps = await db.App.findAll({
  38. where: {
  39. activated: false
  40. },
  41. limit: 5
  42. });
  43. if (pendingApps <= 0) {
  44. ctx.reply("No application is waiting for activation");
  45. return;
  46. }
  47. let apps = pendingApps.map(el => {
  48. return [
  49. `✔️[${el.id}] ${el.name}`,
  50. `❌[${el.id}] ${el.name}`
  51. ]
  52. });
  53. console.log(apps);
  54. return ctx.reply('Activate app', Markup
  55. .keyboard(apps)
  56. .oneTime()
  57. .resize()
  58. .extra());
  59. } catch (e) {
  60. ie(3);
  61. }
  62. });
  63. cmdRegistry.register("registerApp", async (ctx) => {
  64. try {
  65. const args: string = await ctx.state.command.args;
  66. if (args.length > 25) {
  67. ctx.reply("Name to long!");
  68. return;
  69. }
  70. const appName = args;
  71. const instance = await db.App.create({
  72. name: appName,
  73. activated: true
  74. });
  75. ctx.reply(`App registered\n` +
  76. `Name: ${instance.name}\n` +
  77. `Auth: ${instance.auth}`);
  78. return;
  79. } catch (e) {
  80. ie(4);
  81. }
  82. });
  83. }
  84. module.exports = app;