티스토리 뷰
*이 글은 python 버전 3.6, discord.py 버전 0.16.12 기준으로 작성된 글입니다.*
봇 명령어 제작
저번에 작성한 소스 코드입니다.
import discord
client = discord.Client()
@client.event
async def on_ready():
print(client.user.name)
print(client.user.id)
@client.event
async def on_message(message):
if message.author == client.user:
return
await client.send_message(message.channel,message.content)
client.run('token')
이 소스 코드는 사용자가 메시지를 보냈을 때 봇이 같은 메시지를 보내는 기능이었습니다.
이번 시간에는 특정 문자로 시작되는 단어를 입력할 때 봇이 응답하는 기능을 만들어 보도록 하겠습니다.
import discord
client = discord.Client()
@client.event
async def on_ready():
print(client.user.name)
print(client.user.id)
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('='):
await client.send_message(message.channel,"명령어 테스트")
client.run('token')
위 사진처럼 '='로 시작할 경우 "명령어 테스트"를 출력하는 프로그램을 작성했습니다.
파이썬의 메소드 중 하나인 startswith()을 이용해 시작 단어가 '='인지 확인을 하는 방식입니다.
다른 메소드를 활용하면 봇의 기능을 다양하게 만들 수 있습니다.
봇 메시지 꾸미기
지금까지 만든 봇은 전혀 꾸며지지 않은 메시지만 보냈습니다.
이번 시간에는 우리가 만든 봇의 메시지를 꾸며보도록 하겠습니다.
디스코드의 메시지를 꾸미는 방법은 Markdown과 discord.py의 embed() 클래스를 이용하는 방법이 있습니다.
Markdown의 경우는 위 링크에 들어가셔서 확인하시면 됩니다.
Markdown의 예시입니다.
이제 embed() 클래스를 사용하겠습니다.
import discord
client = discord.Client()
@client.event
async def on_ready():
print(client.user.name)
print(client.user.id)
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('='):
await client.send_message(message.channel, embed=discord.Embed(description="명령어 테스트"))
else:
await client.send_message(message.channel, embed=discord.Embed(description="올바른 명령어가 아닙니다."))
client.run('token')
앞서 이용했던 명령어도 추가하여 작성했습니다.
소스 코드를 수정할 필요 없이 send_message 함수에 매개변수 embed만 추가해주시면 됩니다.
잘 적용된 모습입니다.
하지만 이렇게만 하면 꾸몄다고 하기엔 너무 아쉬운 부분이 보입니다.
embed 클래스에 매개변수를 넣어 더 꾸며보도록 하겠습니다.
title
메시지에 제목을 추가하는 매개변수입니다.
이런 식으로 메시지 위에 제목을 추가할 수 있습니다.
import discord
client = discord.Client()
@client.event
async def on_ready():
print(client.user.name)
print(client.user.id)
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('='):
await client.send_message(message.channel, embed=discord.Embed(title="디스코드 봇", description="명령어 테스트"))
else:
await client.send_message(message.channel, embed=discord.Embed(title="디스코드 봇", description="올바른 명령어가 아닙니다."))
client.run('token')
description
계속 넣어준 매개변수입니다. 보내고 싶은 메시지를 입력하시면 됩니다.
import discord
client = discord.Client()
@client.event
async def on_ready():
print(client.user.name)
print(client.user.id)
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('='):
await client.send_message(message.channel, embed=discord.Embed(description="명령어 테스트"))
else:
await client.send_message(message.channel, embed=discord.Embed(description="올바른 명령어가 아닙니다."))
client.run('token')
colour
메시지 앞부분의 색상을 변경하는 매개변수입니다. 색상 코드를 입력하면 됩니다.
import discord
client = discord.Client()
@client.event
async def on_ready():
print(client.user.name)
print(client.user.id)
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('='):
await client.send_message(message.channel, embed=discord.Embed(description="명령어 테스트",colour=0x00FFFF))
else:
await client.send_message(message.channel, embed=discord.Embed(description="올바른 명령어가 아닙니다.",colour=0x00FFFF))
client.run('token')
그 외에도 많은 기능이 있으니 discord.py 링크로 들어가 필요한 기능을 찾아보시기 바랍니다.
다음 시간에는 봇이 채널에 들어가 유튜브 영상을 재생하는 기능을 만들어 보도록 하겠습니다.
'프로그래밍 > python' 카테고리의 다른 글
[python3] 디스코드 봇으로 유튜브 재생하기 (26) | 2019.03.21 |
---|---|
[python3] pyinstaller를 이용해 .py 파일을 .exe 파일로 변환하기 (0) | 2019.03.02 |
[python3] PyQt5 및 Qt Designer 설치 (0) | 2019.02.23 |
[python3] 디스코드 봇 생성 및 텍스트 출력하기 (2) | 2018.05.11 |