본문으로 바로가기
728x90
반응형

이전글보기

[정보/Discord Bot] - [discord.py 2.0] 01. 사전 준비

[정보/Discord Bot] - [discord.py 2.0] 02. Discord Bot 계정 만들기

[정보/Discord Bot] - [discord.py 2.0] 03. PyCharm 세팅하기

[정보/Discord Bot] - [discord.py 2.0] 04. discord.py 라이브러리 설치하기

[정보/Discord Bot] - [discord.py 2.0] 05. 봇 기본설정하기


이번엔 봇에 명령어를 추가해봅시다.

 

명령어를 추가할때는 아래와 같이 decorator와 함께 command 를 호출합니다. 

@봇객체.command()

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import asyncio
import discord
from discord.ext import commands
 
intents = discord.Intents.all()
app = commands.Bot(command_prefix='!', intents=intents)
 
 
async def main():
    async with app:
        file = open("discord_token.txt")
        bot_token = file.readline()
        file.close()
        await app.start(bot_token)
 
asyncio.run(main())
cs

이전에 만들어놨던 main문에 테스트용 명령어를 넣어봅시다.

추가할 명령어는 다음과 같습니다

1
2
3
4
5
6
7
8
@app.command()
async def ping(ctx):
    await ctx.send('pong')
 
 
@app.command(name="핑")
async def ping(ctx):
    await ctx.send('퐁')
cs

 1: decorator에서 사용되는 "app"은 소스코드의 

app = commands.Bot(command_prefix='!', intents=intents)

 항목에서 Bot의 객체를 app에다가 저장하였으므로 @app.command() 로 입력합니다.

2: 함수명이 ping인데, 1번 line 에서 명령어 이름을 따로 할당하지 않았으므로 함수이름인 ping이 명령어가 됩니다. 이때 ctx에는 명령어가 호출된 서버의 정보를 포함하고 있습니다.

3: 명령어가 호출된 서버(ctx)에 pong 메세지를 보냅니다.

6: 1번 line 과 유사하나 명령어의 이름을 name="핑" 으로 할당하여 함수를 만듭니다

7: 6번 line에서 명령어의 이름을 이미 할당하였으므로, 함수명은 명령어의 동작을 호출하는것에 영향을 주지 않습니다.

8: 명령어가 호출된 서버(ctx)에 "퐁" 메세지를 보냅니다.

 

추가한 코드는 다음과 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import asyncio
import discord
from discord.ext import commands
 
intents = discord.Intents.all()
app = commands.Bot(command_prefix='!', intents=intents)
 
 
async def main():
    async with app:
        file = open("discord_token.txt")
        bot_token = file.readline()
        file.close()
        await app.start(bot_token)
 
 
@app.command()
async def ping(ctx):
    await ctx.send('pong')
 
 
@app.command(name="핑")
async def ping(ctx):
    await ctx.send('퐁')
 
asyncio.run(main())
cs

 

소스코드를 완성하고, 봇을 실행시켜 명령어를 확인해봅시다.

 


포스팅에 사용된 모든 소스코드는 아래 Github에서 확인하실 수 있습니다.

https://github.com/aochfl/ChoRi_TestBot

 

GitHub - aochfl/ChoRi_TestBot

Contribute to aochfl/ChoRi_TestBot development by creating an account on GitHub.

github.com


참고자료

https://discordpy.readthedocs.io/en/latest/index.html

728x90
반응형