Actions for Discord
의 코드를 참고하여 yml(yaml)을 만든다.# This is a basic workflow to help you get started with Actions
name: Discord 알리미
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches: [ main ]
# pull_request:
# branches: [ main ]
# Allows you to run this workflow manually from the Actions tab
# workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2 # 지우면 안됨, 서버에서 클론받아 액션을 돌리고 checkout을 하는 과정이 필수적임
- name: 멋사 안녕
run: echo "멋사 안녕"
- name: Discord notification
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
DISCORD_USERNAME: GitHub Actions
DISCORD_AVATAR: https://images.velog.io/images/nathan29849/post/344b519b-f338-45a9-8f24-75fe8f6253f5/image.png
uses: Ilshidur/action-discord@master
with:
args: "DOUGH GitHub Actions!: {{GITHUB_EVENT_NAME}}"
# args: 'The project {{ EVENT_PAYLOAD.repository.full_name }} has been deployed.'
# # Runs a single command using the runners shell
# - name: Run a one-line script
# run: echo Hello, world!
# # Runs a set of commands using the runners shell
# - name: Run a multi-line script
# run: |
# echo Add other actions to build,
# echo test, and deploy your project.
디스코드의 서버를 하나 개설한다.
서버 설정에 들어가서 연동
-> 웹후크
로 들어간다.
웹 후크를 만들어 웹 후크 URL을 복사한다.
복사한 웹 후크 URL을 가지고 repository로 돌아간 뒤, settings
에서 왼쪽 목차 중 Sectrets
를 선택한다.
New repository secret
을 선택한 뒤 Secret name을 설정하고 value
에 아까 복사한 웹 후크 URL을 넣어준다. (웹 후크 URL은 민감한 정보에 속하기 때문에 이런 방식으로 관리한다.)
구글 검색창에 discord for developers
를 검색하여 아래 페이지로 이동한다.
discord for developers 바로가기
Application
-> New Application
을 통해 새로운 Application을 만든다.
Bot
에 들어가서 새로운 Bot을 만든다(흔한 이름이라면 이름을 바꿔야 봇이 생성됨에 유의하자)
그리고 OAuth2
로 들어가서 bot
체크박스에 체크를 하면 아래와 같이 코드를 copy할 수 있게 나온다.
해당 주소를 copy하여 url로 접속하게 되면 다음과 같이 bot을 설정할 수 있는 창이 뜬다. (Bot을 넣으려는 서버를 선택하고 승인을 완료하자)
Discord Developer 사이트에서 Bot을 클릭해 들어가보면 Token
이라는 것이 보인다.
해당 토큰을 유출하게 되면 discord로 부터 아래와 같이 DM이 날아오고, 토큰이 재설정 되었다는 메시지가 오니 유출에 주의하자.
이 복사한 Token을 가지고 python file을 만들어 우리가 원하는 대로 Bot이 작동할 수 있도록 해줄 것이다.
아래와 같이 파이썬 파일을 작성해주면 된다. (토큰 정보에 복사한 Token을 넣어주면 된다.)
import discord
import random
from discord.ext import commands
bot = commands.Bot(command_prefix="!")
# command -> 시작 command !시작 랜덤 command!랜덤
# event -> on_massage, on_reactions_add
@bot.command()
async def 시작(ctx):
await ctx.send("안녕! 안녕! 안녕!")
@bot.command()
async def 배고파(ctx):
await ctx.send("친구한테 빌붙으세요")
@bot.command()
async def 랜덤(ctx):
# 1~100까지 숫자 중 하나를 랜덤으로 뽑기
number = random.randrange(1, 101)
await ctx.send(f"뽑힌 숫자: {number}")
@bot.event
async def on_message(message):
if message.author.bot == False:
await message.channel.send("누군가가 메시지를 입력했습니다!")
@bot.event
async def on_reaction_add(reaction, user):
await user.send("네가.. 이모티콘을 눌렀니..?")
bot.run("토큰정보")
pip3 install discord.py
pip3 install asyncio
asyncio
는 비동기 처리를 위해 필요하다.
참고 : 파이썬으로 비동기 처리하기
이렇게 아래 코드를 터미널에 입력하고나면 아래와 같이 잘 작동됨을 확인할 수 있다!
python3 discord_bot.py (파일의 이름)
++ python에서 discord bot을 만들면서 생기는 문제점
(async, import discord) 관련 문제점 해결에 관한 블로그를 첨부한다.
참고 : superclass.io