LINE에서 문자 수를 계산해 준다.

토모다치 소환 배경



6월이 되어, 각 기업이 하계 인턴의 모집을 처음으로 하고 있습니다. 저도 올해부터 인턴에 참가하려고 생각하고 있습니다만, ES 작성이 매우 불안한 ​​나는 선배에게 ES의 첨삭을 부탁했습니다.

LINE에서 선배에게 문장을 보내보고 받습니다만, 곤란한 일이 있었습니다. ES에는 대체로 문자수 제한이 있습니다. (게다가 아슬아슬하게까지 쓰는 것이 추천되고 있는 것 같다) 제한 문자수 단지로 쓴 문장을 첨삭해 받을 때, 선배에게 고쳐진 문장이 문자수를 초과하고 있으면 참을 수 없는 기분이 됩니다. 좀 더 줄일 수 있습니까? 뭐라고 말할 수 있었던 것이 아닙니다.

또한 문자 수를 세는 것 자체도 그렇게 귀찮습니다. ES의 형식에 따라 세는 것도 있지만, 대부분 나는 Word에 붙여 넣고 문자 수를 세고있었습니다. 귀찮습니다.

거기서, 카운트계의 친구를 다른 사람 토크에 초대해, 문장의 문자수를 세어 받는 것을 생각해 냈습니다. 하지만 그런 편리한 친구는 없습니다. 따라서 LineBOT을 소환합니다.

환경



모처럼이므로, 연구에 필요하고 공부하고 있는 중중의 Node.js를 사용해 보기로 하겠습니다. Heroku를 사용하면 lineBot을 쉽게 만들 수 있습니다.
- 히로쿠
- Node.js

참고



LINE BOT을 Heroku + Node.js로 할 때까지
매우 이해하기 쉬웠습니다. 단계에 따라 LINEBOT을 쉽게 만들 수 있습니다. 감사합니다.

구현



위의 기사를 참고하여 echoman을 kazoerukun으로 구현했습니다.

lineBot()



/hook 을 호출하면 이 함수를 호출하게 된다.
function lineBot(req, res) {
        res.status(200).end();
        const events = req.body.events;
        const promises = [];
        for (let i = 0, l = events.length; i < l; i++) {
            const ev = events[i];
            promises.push(
                kazoerukun(ev)
            )
        }
    }

세는 군 ()



텍스트를 얻고 문자 수를 반환합니다.
async function kazoerukun(ev) {
        return client.replyMessage(ev.replyToken, {
            type: 'text',
            text: `${ev.message.text.length}もじ`
        })
    }

켜고 끌 수 있습니다.



쭉 카운트 해 오면, 일일이 문자수를 돌려주고 오는지 엿보는 군에 좌절합니다.
상태를 저장하는 변수를 준비하여 전환할 수 있도록 했습니다.

세는 군 ()



public 디렉토리에 isCountOn.txt를 준비하고 매번 로드하기로 결정했습니다. 더 좋은 방법이있을 것 같지만 ...
async function kazoerukun(ev) {
        const isCountOn = fs.readFileSync('public/isCountOn.txt')
        if (ev.message.text == 'かぞえて') {
            switchMode(ev, 'on')
        } else if (ev.message.text == 'やめて') {
            switchMode(ev, 'off')
        } else if (isCountOn == 'true') {
            return client.replyMessage(ev.replyToken, {
                type: 'text',
                text: `${ev.message.text.length}もじ`
            })
        }
    }

switchMode()



전환을 위해 파일을 다시 쓰고 있습니다.
function switchMode(ev, mode) {
        if (mode == 'on') {
            fs.writeFileSync('public/isCountOn.txt', 'true')
            return client.replyMessage(ev.replyToken, {
                type: 'text',
                text: `かぞえるよ`
            })
        }else if (mode == 'off') {
            fs.writeFileSync('public/isCountOn.txt', 'false')
            return client.replyMessage(ev.replyToken, {
                type: 'text',
                text: `やめるよ`
            })
        }
    }

작성한 프로그램은 github에 실려 있습니다.

할 수 있다면



이런 식으로 사용할 수 있습니다.


이것을 선배와의 토크룸에 초대해 사용해 갑니다. 편리!  

감상



LINEBOT을 만든 것은 처음이었지만, 선구자 여러분 덕분에 간단하게 만들 수 있었습니다. 그 밖에도 여러가지 일을 할 수 있을 것 같기 때문에, 무언가 생각하면 만들어 보겠습니다.

좋은 웹페이지 즐겨찾기