Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9229

TypeScript + Node.jsで書くTwitterBotの作り方

$
0
0
はじめに おはようございます。こんにちは。こんばんは。 Watatakuです。 今回の内容はTypeScript + Node.jsで書くTwitterBotの作り方です。 この記事の対象者は以下のとおりです。 対象者 初学者 モダン環境でTwitterBotが作りたいって方 書かないこと TwitterAPIキーの取得方法 プロジェクト作成 作業ディレクトリに行き、以下のコマンドを入力する。 $ mkdir twitter-bot $ cd twitter-bot $ touch index.ts $ npm init typescriptを使えるようにする $ npm install -D typescript $ npm install -D @types/node $ npx tsc --init $ npm install -D ts-node ts-nodeはjsのトランスパイルなしにtsコードを実行してくれます。 sc --initでtsconfig.jsonも生成しておきます。 その他必要なモジュールのインストール $ npm install express $ npm install -D @types/express $ npm install twitter $ npm install -D @types/twitter Twitter Botを作る index.ts import express from "express"; import Twitter from "twitter"; import { customerKey, customerSeacret, accsessTokenKey, accsessTokenSeacret, } from "../seacretDirectory/seacret"; const app: express.Express = express(); app.use(express.json()); app.use(express.urlencoded({ extended: true })); //CROS対応(というか完全無防備:本番環境ではだめ絶対) app.use( (req: express.Request, res: express.Response, next: express.NextFunction) => { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Methods", "*"); res.header("Access-Control-Allow-Headers", "*"); next(); } ); // 型定義 type Message = { message: string; }; type Params = { status: string; }; const client: Twitter = new Twitter({ consumer_key: customerKey(), consumer_secret: customerSeacret(), access_token_key: accsessTokenKey(), access_token_secret: accsessTokenSeacret(), }); const message: Message = { message: "Bad Request", }; //get app.get("/api", (req: express.Request, res: express.Response) => { res.send(JSON.stringify(message)); }); //post app.post("/api", (req: express.Request, res: express.Response) => { const detail_id = req.query.id; if (detail_id === "") { res.send(JSON.stringify(message)); } else { const params: Params = { status: "ツイートしたいこと。" }; client.post("statuses/update", params, (tweet: Twitter.ResponseData) => { if (tweet) { res.json(tweet); } else { res.json("ツイートできませんでした。"); } }); } }); //put app.put("/api", (req: express.Request, res: express.Response) => { res.send(JSON.stringify(message)); }); //delete app.delete("/api", (req: express.Request, res: express.Response) => { res.send(JSON.stringify(message)); }); const port: string | number = process.env.PORT || 8080; app.listen(port); console.log("ポート番号" + port + "でWebサーバが立ち上がりました"); 実行 $ npx ts-node index.ts localhost:8080/apiにpostメソッドでアクセスのみツイートされ、その他メソッドのアクセスでは「Bad Request」 最後に もし間違いとかあればご連絡いただけると幸いです。 以上がTypescript + node.jsでのTwitterBotの作り方でした。TwitterBotを作る際の参考になれば幸いです。

Viewing all articles
Browse latest Browse all 9229