미사용/(舊)디스코드봇 강좌

디스코드봇(파이썬) 09 | 이모지,반응을 달아보자.

건유1019 2020. 5. 17. 12:00

이번 시간에는 이모지를 달아볼 것입니다. 사실 이모지는 send를 통해 다는 거 외에는 없습니다. 그러나, 이모지를 보내기 위해선 :one: :two:등을 사용하여 출력할 수도 있으나, 오늘 알아볼 것은 파이썬 모듈과 기본 유니코드 기능을 사용하여 이모지를 출력해 볼 것입니다.


유니코드를 통하여 출력하기!

우선 모듈 없이 유니코드를 통하여 이모지를 출력해보도록 해보겠습니다. 우선 아래의 링크에 미리 들어갑니다.

http://www.unicode.org/emoji/charts/full-emoji-list.html#274c <- 유니코드 이모지 목록표

위 사이트에서 자신이 원하는 이모지를 택한 후 왼쪽의 U+XXXX라고 작성된 곳이 있을 겁니다. 그 내용을 복사합니다.

저는 이것을 출력해보고자 합니다. 우선 0️⃣의 유니코드는 "U+0030 U+FE0F U+20E3" 입니다.

파이썬에서는 유니코드를 출력하기 위해선 8자리로 변환해줘야 합니다. 그렇다고 변환기 혹은 계산기를 사용하는 것이 아닙니다! U+XXXX 기준 +를 000으로 변경해주고, 만약에 8자리 충족이 안됬다면 000 변경해준 곳에 0을 추가로 작성해주면 됩니다. 그리고 U 부분 앞쪽에 \를 작성해주면 변환이 끝났습니다! 참고로 지금 이모지처럼 유니코드가 2개 이상 붙어있으면 공백도 제거해주셔야 합니다. 변환해준 값은 "\U00000030\U0000FE0F\U000020E3"와 동일합니다. 

 

이를 디스코드 봇에 응용하여 작성하면 아래의 코드가 됩니다.

if message.content == "이모지 출력":
	await message.channel.send("\U00000030\U0000FE0F\U000020E3")
	return

"이모지 출력"을 입력하게 되면 0️⃣를 출력하게 됩니다.

0️⃣을 출력했습니다.

위 사진과 같이 이모지가 출력되게 합니다. 반응 또한 방법이 동일합니다.

if message.content == "이모지 출력":
	msg = await message.channel.send("\U00000030\U0000FE0F\U000020E3 을 반응으로 추가")
	await msg.add_reaction("\U00000030\U0000FE0F\U000020E3")
	return

위 코드처럼 변경하면 아래의 사진처럼 출력되게 됩니다.

0️⃣가 반응으로 추가되었습니다.

add_reaction의 경우 4편에서 서술했지만 정작 이모지를 다는 법에 대해 서술한 적이 없기 때문에 서술하는 것입니다.


이모지 모듈을 사용하여 출력하기!

이모지 모듈을 사용하여, 🏘를 출력해보겠습니다.

제가 출력할 이모지는 위 사진입니다. "houses"를 먼저 기억합시다. 우선 emoji 모듈을 받아주셔야 합니다.

py -m -3 -m pip install emoji #원도우
python3 -m pip install emoji #리눅스

위 코드를 CMD창 혹은 터미널에서 작성해 주세요.

import emoji #맨 윗부분에 추가해줍니다.

if message.content == "이모지 출력":
	e = emoji.emojize(":houses:")
	msg = await message.channel.send(str(e) + "을 반응으로 추가")
	return

이렇게 작성해주시면 이모지가 출력됩니다.

0️⃣을 출력했습니다.

위와 같이 emoji.emojiize를 사용하시면 디스코드 이모지를 출력하는 방식과 비슷하여 익숙하실 겁니다.


이렇게 한번 이모지를 다루어 보았습니다. 저는 이모지 모듈 쓰는 것보다, 유니코드를 쓰는 게 더 편합니다. 오히려 이모지 모듈로 안 되는 경우가 존재하기 때문에.. 크게 권장드리고 싶진 않습니다. 이상으로 디스코드 봇 강의를 마치겠습니다.