Untitled

 avatar
rain
typescript
2 years ago
2.2 kB
2
Indexable
Never
import { deunionize, Scenes, session, Telegraf } from "telegraf";
import "dotenv/config";

if (!process.env.BOT_TOKEN) {
  console.log("Please provide BOT_TOKEN");
  process.exit();
}
if (!process.env.ADMINS) {
  console.log("Please provide at least one ADMIN");
  process.exit();
}

const ADMINS = process.env.ADMINS.split(" ").map((x) => +x);

interface MyWizardSession extends Scenes.WizardSessionData {
  vidName: string;
  vidImg: string;
  vidHash: string;
}

type MyContext = Scenes.WizardContext<MyWizardSession>;

const createVidScene = new Scenes.WizardScene<MyContext>(
  "create-vid-scene",
  async (ctx) => {
    await ctx.reply("Send the video you want to posted");
    return ctx.wizard.next();
  },
  async (ctx) => {
    const message = deunionize(ctx.message);
    // https://t.me/TelegrafJSChat/74686
    if (message && message.video) {
      ctx.scene.session.vidHash = message.video.file_id;
      await ctx.reply("Now input the name of the video");
      return ctx.wizard.next();
    } else ctx.reply("kirim vid yang benar");
  },
  async (ctx) => {
    const message = deunionize(ctx.message);

    if (message && message.text) {
      ctx.scene.session.vidName = message.text;
      await ctx.reply("kirim pict untuk preview vidnya cug");
      return ctx.wizard.next();
    } else ctx.reply("kirim yang benar");
  },
  async (ctx) => {
    const message = deunionize(ctx.message);

    if (message && message.photo) {
      ctx.scene.session.vidImg = message.photo.at(-1).file_id;
      await ctx.reply("kirim pict untuk preview vidnya cug");
      return ctx.wizard.next();
    } else ctx.reply("kirim yang benar");
  }
);

const app = new Telegraf<MyContext>(process.env.BOT_TOKEN);
const stage = new Scenes.Stage<MyContext>([createVidScene]);

app.use(session());
app.use(stage.middleware());

app.start((ctx) => ctx.reply("Hi"));
app.command("/createvid", (ctx) => {
  if (ADMINS.includes(ctx.message.from.id)) ctx.scene.enter("create-vid-scene");
});
app.launch().then(() => console.log("App running!"));

process.once("SIGINT", () => app.stop("SIGINT"));
process.once("SIGTERM", () => app.stop("SIGTERM"));