파이썬으로 디스코드 봇 만들기

디스코드의 놀라운 세계에 빠져보세요!

2. 명령어 만들기

명령어 입출력

저번에 

import discord
from discord.ext import commands
 
app = commands.Bot(command_prefix='prefix that you want')
 
@app.event
async def on_ready():
    print('다음으로 로그인합니다: ')
    print(app.user.name)
    print('connection was succesful')
    await app.change_presence(status=discord.Status.online, activity=None)
     
     
app.run('token that you copied')

여기까지 했었져?

이제 명령어를 만들어봅시다!

명령어 만들기

@app.command()
async def hello(ctx):
    await ctx.send('Hello, World!')
    

이게 명령어를 만드는 코드입니다.

한번 자세히 보자면, @app.command()는 이 아래있는 함수가 명령어라는 뜻이고,

def 뒤에 쓰는 함수 이름은 명령어의 이름이 됩니다.

그리고 그 뒤에 ():가 있는데 괄호 안에는 꼭 ctx를 넣어야합니다.

그리고 await ctx,send()는 메시지를 보내는 역할을 합니다.

 

만약, 따라하기라는 명령어를 만들면, 파라미터를 써주면 됩니다.

@app.command()
async def 따라하기(ctx, *, text):
    await ctx.send(text)
    
    
@app.command()
async def 따라하기2(ctx,text):
    await ctx.send(text)
    
@app.command()
async def 따라하기3(ctx,*text):
    txt = ''
    for tmp in text:
        txt += tmp
        txt += ', '
    await ctx.send(txt[:-2])
    
    

이런식으로 사용자의 파라미터를 받을수 있습니다.

설명

첫번째 방법은, 명령어 뒤에있는 단어를 모두다 파라미터에 넣는겁니다.

원래 파라미터는 뛰어쓰기로 나뉘는데 이걸 쓰면 뛰어쓰기를 해도 인식해서 좋습니다.

 

두번쨰는, 첫번째 파라미터만 받는건데 이건 추천드리지 않습니다.

두번쨰는 원래 

async def hello(ctx, health, height):

이런식으로 쓰는겁니다.

 

세번째는, 리스트 ( 배열)로 하는건데 파라미터 앞에 *을 붙이면, 배열로 인식을 해서 

/hello(명령어) 안녕하세요, 명이입니다.

라고 치면, ['안녕하세요,','명이입니다.']라고 반환됩니다.

그래서 for문을 이용해서 붙이는겁니다.

 

마무리

오늘은 이렇게 명령어 입력과 출력에 대해 알려드렸는데요,

이런식으로 자신만의 명령어를 만들어보세요!

다음시간 예고

다음시간에는 한번 암배드 만드는법을 알려드리겠습니다.

댓글

공지 같이... 공부해주실거죠?
댓글 본문
  1. 코딩처음해요
    붙여서 쓰세요.
    대화보기
    • boy0410
      @app.command()
      async def 따라하기(ctx, *, text):
      await ctx.send(text)


      @app.command()
      async def 따라하기2(ctx,text):
      await ctx.send(text)

      @app.command()
      async def 따라하기3(ctx,*text):
      txt = ''
      for tmp in text:
      txt += tmp
      txt += ', '
      await ctx.send(txt[:-2])

      이것을 어디다가 써야되나요? 새로 파일을 만들어야되나요?
    • 서브
      prefix+command args 형태입니다.
      prefix와 command 사이에는 띄어쓰기가 있어서는 안되는 것으로 알고 있습니다
      대화보기
      • 테스크
        어떤식으로 명령어를 입력해야 봇이 답장을 하는건가요?