어제 대충 구상했던걸 오늘 만들어 보았다.
가장 먼저 만들었던 기능은 도움말이었다.
누가 만들었는지 뭐하려 만들었는지를 적당히 적어두었다.
replier.reply("유사 박성훈 봇\n박성훈이 하는 일+a를 위해서\n할짓없는 박성훈이 설계했습니다.");
replier.reply("💬봇의 전체 명령어\n
봇 도움말 - 봇 만든이, 만든이유 등\n
봇 명령어 - 봇의 전체 명령어 목록\n
봇 [검색어] 콘 - 이모티콘 자동검색\n
봇 주사위 - 주사위가챠를 해볼수 있음\n");
등으로 적절한 답변을 준비했다.
세번째는 주사위기능이었다
애들이 만들어달라길래 넣었다
나름 이쁘게 주사위모양으로 출력해준다.
네번째가 이걸 만들려는 원인이 되었던 이모티콘 출력기능이다
if(message.indexOf("콘") != -1){
message=message.replace(" 콘","");
if(message == " 목록"){
replier.reply("전체의 목록은\n");
}else{
replier.reply("검색어 ["+message+"] 의 이미지는");
replier.reply("http://xxx.xxx.xxx.xxx/backend/test.php?q="+encodeURI(message));
}
}
우선 콘을 출력해야하는지 확인하기 위해 if문을 씌웠고,
콘 부분을 잘라서 없애줬다. 봇 콘 목록으로 입력되면 목록을 저장해둔 홈페이지를 출력해줄 것이고(아직 안만듬)
그게 아닐 경우에는 가운데 메시지 [ex. 어흑 마이깟]을 잘라서
홈페이지에 GET방식으로 전달해준다.
이미지를 띄워주는 서버 측에서는
<head>
<meta charset="utf-8">
<meta property="og:type" content="website">
<meta property="og:description" content="자동 이모티콘 출력기"/>
<meta property="og:title" content="유사-박성훈봇"/>
</head>
오픈 그래프라는 걸 사용하면 카카오톡이 위의 "자동 이모티콘 출력기"라는 글자와
"유사-박성훈봇"이라는 텍스트를 출력한다고 한다.
이것처럼.
이미지도 메타태그로 넣는게 맞으나
메타태그로 넣으니까 변경을 못해서 콘을 바꿀수 없었기에
따로 <img>태그를 썼다.
<?php
$q = $_GET['q'];
$res = NULL;
$min = 99999;
$lev = 0;
$path = NULL;
function Findimage($dir){
global $q, $res, $min, $lev, $path;
$ffs = scandir($dir);
unset($ffs[array_search('.', $ffs, true)]);
unset($ffs[array_search('..', $ffs, true)]);
// 디렉토리가 비어있는지 확인합니다.
if (count($ffs) < 1)
return;
foreach($ffs as $ff){
// 재귀함수 : 파일이 아닌 디렉토리가 있으면, 스스로 자신을 호출하여 반복적으로 실행합니다
if(is_dir($dir.'/'.$ff)) Findimage($dir.'/'.$ff);
else {
//echo $ff.'<br/>';
$lev = levenshtein($q , $ff);
if($lev < $min){
$res = $ff;
$min = $lev;
$path = $dir;
}
}
}
}
Findimage('DCcon');
echo '<img id="icon" src="'.$path.'/'.rawurlencode($res).'"/>';
?>
$q에 GET으로 보낸 [어흑 마이깟]을 가져오고
$res 등의 변수들은 초기화만 해뒀다.
scandir 명령어로 파일 목록을 가져와서, 폴더라면 재귀함수로 한번 더 탐색하는 방법으로 모든 이미지를 가져오고,
php 함수중 하나인 levenshtein함수를 이용해서 가장 비슷한 파일명을 고른다.
고른 값을 $res에 넣어주고, $path에 경로도 넣어서
img태그의 src 안에 넣어줘서 출력할수 있도록 한다.
이렇게 가장 기본적이고 꼭 필요한 기능을 모두 만들면
이렇게 이미지를 출력할 수 있게 된다.