python으로 디스코드 봇 만들기 2

두 번째 강좌네요..적는 것도..힘드네요 ㅜㅜ
저번에 간단하게 +안녕 이라고 하면 출력되는 봇을 만들어 봤잖아요? 이번에는 봇에 여러가지 기능을 넣어볼 것 입니다.

랜덤으로 골라주기

ex
이렇게 목록 중에서 랜덤으로 골라줍니다!.
이 기능을 봇에 넣어 보겠습니다
파이썬 random 기본 모듈에 choice 함수가 있는데요
이 함수는 choice(Array[배열])을 넣어주면 배열 중 랜덤으로 리턴 시켜줍니다
일단 ,로 구분 할 생각입니다.
일단 import random을 해주어야 겠죠
+골라로 시작해야하므로
startswith 함수를 사용합니다.
split는 문자열을 배열로 잘라주는 함수입니다.
자세한 건 주석으로 설명했습니다
그럼 이런 코드가 됩니다.


import discord
import random
TOKEN = '토큰' 

client = discord.Client()

@client.event
async def on_message(message):
    if message.author == client.user:
        return
    #+골라로 시작해야하므로  startswith 함수를 사용합니다.(밑에 코드)
    if message.content.startswith('+골라 '):
        message.content = message.content.replace("+골라 ","")#+골라를 문자열에서 제거
        messagesplit = message.content.split(",")# 문자열을,로 자르기 ex> hello,bullt =>['hello',bullt]
        msg = random.choice(messagesplit)+'을 골랐습니다'#random.choice(배열)>배열 중 랜덤으로 뽑음
        await client.send_message(message.channel, msg)

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')

client.run(TOKEN)

따라 말하기

이렇게 나오게 할 예정입니다.
replace함수로 +메아리를 제거해주어야 합니다.
그리고 다시 보내야합니다.
코딩을 하려 짜 보면 이런 코드가 됩니다.


import discord
import random
TOKEN = '' 

client = discord.Client()

@client.event
async def on_message(message):
    if message.author == client.user:
        return
    if message.content.startswith('+메아리 '):
        message.content = message.content.replace("+메아리 ","")
        msg = message.content
        await client.send_message(message.channel, msg)

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')

client.run(TOKEN)

투표 기능

일단 투표기능을 만들기 위해서는 이모지라는 것을 알아야합니다
이모지란?

일본의 휴대전화 문자 메시지에서 시작되어 지금은 대부분의 스마트폰에 사용되는 그림 문자.
일반적인 서사 체계에서 사용되는 문자들을 조합해 사용하는
이모티콘과는 달리, 그림 형태의 문자를 사용하는 것이 특징이다.
-나무위키-

그럼 좋아요와 싫어요 이모지를 달아주면 되겠죠?

await client.add_reaction(message, “👍”) await client.add_reaction(message, “👎”)

이모지를 다는 함수입니다.
이걸 이용해서 코딩을 해봅시다
이걸 이용해서 코딩을 하면 이런 코드가 됩니다.


import discord
import random
TOKEN = '토큰' 

client = discord.Client()

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('+투표'):
        await client.add_reaction(message, "👍")
        await client.add_reaction(message, "👎")

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')

client.run(TOKEN)

검색어로 네이버 검색하기

이렇게 되게 만들어보겠습니다.
웹코딩을 해 보신 분이시면 아시겠지만 쿼리를 이용하여 세팅(?)을 가져옵니다 (GET 방식일때) 네이버 url을 자세히 살펴보시면 ?query=검색어 으로 검색합니다.
그 다음에 +검색을 없애주어야 합니다.
띄어쓰기를 %20으로 바꾸주는 이유 웹에서는 띄어쓰기를 인식 못해 %20으로 바꾸어주기 때문에
링크를 만들때 띄어쓰기로 바꾸어 주어야 합니다. 그럼 코드는

import discord
import random
TOKEN = '토큰' 

client = discord.Client()

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('+검색 '):
        message.content = "https://search.naver.com/search.naver?query="+message.content.replace("+검색 ","").replace(" ","%20")
        msg = message.content
        await client.send_message(message.channel, msg)

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')

client.run(TOKEN)

이렇게 됩니다..
이로써 2번째 강의도 끝났네요.
여기 적은 예제들은 아주 소수…입니다 아이디어만 있다면 더 많은 것을
만들 수 있죠

댓글은 큰 힘이 됩니다! 질문도 댓글에 남겨주세요

3번째 강의 보러가기 »

Written on September 15, 2018