이 튜토리얼은 클라우드에서 완전히 자신 만의 Discord 봇을 구축하는 방법을 보여줍니다.
컴퓨터에 아무것도 설치할 필요가 없으며 봇을 호스팅 하기 위해 비용을 지불 할 필요가 없습니다.
Discord API, Python 라이브러리 및 Repl.it이라는 클라우드 컴퓨팅 플랫폼을 포함한 여러 도구를 사용할 것입니다.
이 문서화 된 튜토리얼의 비디오 버전도 있습니다. 비디오는 아래에 삽입되고 작성된 버전은 비디오 뒤에 있습니다.
https://www.freecodecamp.org/news/create-a-discord-bot-with-python/
Discord Bot 계정을 만드는 방법
Python 라이브러리 및 Discord API를 사용하려면 먼저 Discord Bot 계정을 만들어야 합니다.
Discord Bot 계정을 만드는 단계는 다음과 같습니다.
4. 응용 프로그램에 이름을 지정하고 "만들기"를 클릭합니다.
5. "봇"탭으로 이동 한 다음 "봇 추가"를 클릭합니다. "Yes, do it!"을 클릭하여 확인해야 합니다.
Public Bot (선택됨) 및 Require OAuth2 Code Grant (선택 취소됨)에 대한 기본 설정을 유지합니다.
봇이 생성되었습니다. 다음 단계는 토큰을 복사하는 것입니다.
이 토큰은 봇의 비밀번호이므로 누구와도 공유하지 마세요. 누군가가 귀하의 봇에 로그인하여 모든 종류의 나쁜 일을 할 수 있습니다.
실수로 공유 된 경우 토큰을 다시 생성 할 수 있습니다.
봇을 서버에 가입하도록 초대하는 방법
이제 봇 사용자를 서버로 가져와야 합니다. 이렇게 하려면 초대 URL을 만들어야 합니다.
"OAuth2"탭으로 이동합니다. 그런 다음 "범위"섹션에서 "봇"을 선택합니다.
이제 봇에 대해 원하는 권한을 선택하십시오. 우리 봇은 주로 문자 메시지를 사용하므로 많은 권한이 필요하지 않습니다. 봇이 수행하려는 작업에 따라 더 많은 것이 필요할 수 있습니다. "관리자"권한에 주의하십시오.
적절한 권한을 선택한 후 권한 위에 있는 '복사'버튼을 클릭합니다. 그러면 서버에 봇을 추가하는 데 사용할 수 있는 URL이 복사 됩니다.
URL을 브라우저에 붙여 넣고 봇을 초대 할 서버를 선택한 다음 "승인"을 클릭합니다.
봇을 추가하려면 계정에 "서버 관리"권한이 필요합니다.
이제 봇 사용자를 만들었으므로 봇용 Python 코드 작성을 시작합니다.
discord.py 라이브러리로 기본 Discord 봇을 코딩하는 방법
discord.py Python 라이브러리를 사용하여 봇용 코드를 작성합니다. discord.py는 Python에서 Discord 봇을 쉽게 만들 수 있는 Discord 용 API 래퍼입니다.
Repl을 만들고 disocrd.py를 설치하는 방법
코드 편집기를 사용하여 로컬 컴퓨터에서 봇을 개발할 수 있습니다. 그러나 이 튜토리얼에서는 누구나 따라하기가 더 간단 해 지므로 Repl.it을 사용할 것입니다. Repl.it는 웹 브라우저에서 사용할 수 있는 온라인 IDE입니다.
Repl.it로 이동하여 시작하십시오. 새 Repl을 만들고 언어로 "Python"을 선택합니다.
discord.py 라이브러리를 사용하려면 main.py 상단에 import discord를 작성하면 됩니다. Repl.it은 "실행"버튼을 누르면 이 종속성을 자동으로 설치합니다.
봇을 로컬로 코딩하려는 경우 MacOS에서 이 명령을 사용하여 discord.py를 설치할 수 있습니다.
python3 -m pip install -U discord.py
pip 대신 pip3을 사용해야 할 수도 있습니다.
Windows를 사용하는 경우 대신 다음 줄을 사용하십시오.
py -3 -m pip install -U discord.py
봇에 대한 Discord 이벤트를 설정하는 방법
discord.py는 이벤트의 개념을 중심으로 합니다. 이벤트는 사용자가 듣고 응답하는 것입니다. 예를 들어 메시지가 발생하면 응답 할 수 있는 이벤트를 받게 됩니다.
특정 메시지에 답장하는 봇을 만들어 보겠습니다. 이 간단한 봇 코드는 코드 설명과 함께 discord.py 문서에서 가져온 것입니다. 나중에 봇에 더 많은 기능을 추가 할 예정입니다.
이 코드를 main.py에 추가하십시오. (discord.py가 아니라 원하는 경우 파일 이름을 다른 이름으로 지정할 수 있습니다.)이 모든 코드가 수행하는 작업에 대해 곧 설명하겠습니다.
import discord
import os
client = discord.Client()
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('$hello'):
await message.channel.send('Hello!')
client.run(os.getenv('TOKEN'))
Discord에서 봇 사용자를 만들 때 토큰을 복사했습니다. 이제 토큰을 저장할 .env 파일을 만들 것입니다. 코드를 로컬에서 실행하는 경우 .env 파일이 필요하지 않습니다. os.getenv ( 'TOKEN')을 토큰으로 바꾸십시오.
.env 파일은 환경 변수를 선언하는 데 사용됩니다. Repl.it에서 생성 한 대부분의 파일은 누구에게나 표시되지만 .env 파일은 나에게만 표시됩니다. 공개 repl을 보는 다른 사람들은 .env 파일의 내용을 볼 수 없습니다.
따라서 Repl.it에서 개발하는 경우 토큰이나 키와 같은 개인 정보 만 .env 파일에 포함하십시오.
"파일 추가"버튼을 클릭하고 .env라는 파일을 만듭니다.
파일 안에 이전에 복사 한 실제 토큰을 포함하여 다음 행을 추가하십시오.
TOKEN=[paste token here]
이제 Discord 봇 코드에서 각 코드 행이 수행하는 작업을 살펴 보겠습니다.
봇에 대한 코드가 있으므로 이제 실행하기 만하면 됩니다.
봇 실행 방법
이제 상단의 실행 버튼을 클릭하여 repl.it에서 봇을 실행하십시오.
로컬에서 봇을 작성하는 경우 터미널에서 다음 명령을 사용하여 봇을 실행할 수 있습니다.
Windows의 경우 :
py -3 main.py
다른 시스템에서 :
python3 main.py
이제 Discord 룸으로 이동하여 "$ hello"를 입력하십시오. 봇이 "Hello!"를 반환해야 합니다.
봇을 개선하는 방법
이제 기본 봇이 작동하므로 이를 개선 할 것입니다. 어떤 이유로 "봇 격려"라고 불립니다.
이 봇은 누군가가 슬프거나 우울한 단어가 포함 된 메시지를 보낼 때마다 격려의 메시지로 응답합니다.
누구나 봇이 사용할 격려 메시지를 추가 할 수 있으며 사용자가 제출 한 메시지는 Repl.it 데이터베이스에 저장됩니다.
또한 누군가가 채팅에 "$inspire"메시지를 입력하면 봇은 API에서 임의의 영감을 주는 인용문을 반환합니다.
"$inspire"기능 추가부터 시작하겠습니다.
봇에 영감을 주는 인용문을 추가하는 방법
zenquotes.io라는 API에서 영감을 주는 인용문을 얻을 수 있습니다. Python 모듈을 몇 개 더 가져 와서 get_quote() 함수를 추가하고 함수를 호출하도록 봇 코드를 업데이트해야 합니다.
다음은 업데이트 된 코드입니다. 코드 다음에 새로운 부분을 설명하겠습니다.
import discord
import os
import requests
import json
client = discord.Client()
def get_quote():
response = requests.get("https://zenquotes.io/api/random")
json_data = json.loads(response.text)
quote = json_data[0]['q'] + " -" + json_data[0]['a']
return(quote)
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('$inspire'):
quote = get_quote()
await message.channel.send(quote)
client.run(os.getenv('TOKEN'))
이제 요청 모듈을 가져와야 합니다. 이 모듈을 사용하면 코드가 API에서 데이터를 가져 오기 위해 HTTP 요청을 할 수 있습니다. API는 JSON을 반환하므로 json 모듈을 사용하면 반환 된 데이터를 더 쉽게 사용할 수 있습니다.
get_quote() 함수는 매우 간단합니다. 먼저 requests 모듈을 사용하여 API URL에서 데이터를 요청합니다. API는 임의의 영감을 주는 인용문을 반환합니다. 이 함수는 현재 API가 작동을 멈춘 경우 다른 API에서 따옴표를 가져 오도록 쉽게 다시 작성할 수 있습니다.
다음으로 함수 내에서 json.loads()를 사용하여 API에서 JSON으로 응답을 변환합니다. 시행 착오를 통해 JSON에서 원하는 문자열 형식으로 따옴표를 얻는 방법을 알아 냈습니다. 따옴표는 함수에서 문자열로 반환됩니다.
코드에서 업데이트 된 마지막 부분은 끝입니다. 이전에는 "$ hello"로 시작하는 메시지를 찾았습니다. 이제 "$inspire"를 찾습니다. "Hello!"를 반환하는 대신 quote = get_quote()를 사용하여 따옴표를 가져 와서 따옴표를 반환합니다.
이 시점에서 코드를 실행하고 사용해 볼 수 있습니다.
봇에 격려 메시지를 추가하는 방법
이제 사용자가 슬픈 단어로 메시지를 게시 할 때 봇이 격려 메시지로 응답하는 기능을 구현합니다.
봇에게 슬픈 말을 추가하는 방법
먼저 봇이 응답 할 슬픈 단어가 포함 된 Python 목록을 만들어야 합니다.
클라이언트 변수가 생성 된 후 다음 줄을 추가합니다.
sad_words = ["sad", "depressed", "unhappy", "angry", "miserable"]
목록에 더 많은 단어를 자유롭게 추가하십시오.
봇에 격려 메시지를 추가하는 방법
이제 봇이 응답 할 고무적인 메시지 목록을 추가합니다.
작성한 sad_words 목록 뒤에 다음 목록을 추가하십시오.
starter_encouragements = [
"Cheer up!",
"Hang in there.",
"You are a great person / bot!"
]
이전과 마찬가지로 원하는 구문을 목록에 추가 할 수 있습니다. 나중에 사용자가 봇이 사용할 고무적인 문구를 더 추가 할 수 있는 기능을 추가 할 것이기 때문에 지금은 세 가지 항목 만 사용하고 있습니다.
메시지에 응답하는 방법
이제 우리가 만든 두 목록을 사용하도록 봇을 업데이트 해야 합니다. 먼저 봇이 격려 메시지를 무작위로 선택하므로 무작위 모듈을 가져옵니다. 코드 맨 위에 있는 import 문에 다음 줄을 추가합니다. import random.
이제 on_message() 함수를 업데이트하여 모든 메시지에 sad_words 목록의 단어가 포함되어 있는지 확인합니다. 슬픈 단어가 발견되면 봇은 무작위로 격려의 메시지를 보냅니다.
다음은 업데이트 된 코드입니다.
async def on_message(message):
if message.author == client.user:
return
msg = message.content
if msg.startswith('$inspire'):
quote = get_quote()
await message.channel.send(quote)
if any(word in msg for word in sad_words):
await message.channel.send(random.choice(starter_encouragements))
봇을 테스트하기에 좋은 시기입니다. 이제 자신의 봇을 만들 만큼 충분히 알고 있습니다. 그러나 다음으로 Repl.it 데이터베이스를 사용하여 고급 기능을 구현하고 데이터를 저장하는 방법을 배웁니다.
사용자가 제출 한 메시지를 활성화하는 방법
봇은 완전히 작동하지만 이제 Discord에서 바로 봇을 업데이트 할 수 있습니다. 사용자는 봇이 슬픈 단어를 감지 할 때 사용할 수 있도록 더 많은 격려 메시지를 추가 할 수 있어야 합니다.
Repl.it의 내장 데이터베이스를 사용하여 사용자가 제출 한 메시지를 저장할 것입니다. 이 데이터베이스는 모든 복제에 내장 된 키-값 저장소입니다.
코드 상단의 다른 import 문 아래에서 from replit import db를 추가합니다. 이렇게 하면 Repl.it 데이터베이스를 사용할 수 있습니다.
사용자는 봇이 Discord 채팅에서 직접 사용할 수 있도록 사용자 지정 권장 메시지를 추가 할 수 있습니다. 봇에 대한 새 명령을 추가하기 전에 사용자 지정 메시지를 데이터베이스에 추가하고 삭제하는 두 개의 도우미 함수를 만들어 보겠습니다.
get_quote() 함수 뒤에 다음 코드를 추가합니다.
def update_encouragements(encouraging_message):
if "encouragements" in db.keys():
encouragements = db["encouragements"]
encouragements.append(encouraging_message)
db["encouragements"] = encouragements
else:
db["encouragements"] = [encouraging_message]
def delete_encouragment(index):
encouragements = db["encouragements"]
if len(encouragements) > index:
del encouragements[index]
db["encouragements"] = encouragements
update_encouragements() 함수는 격려 메시지를 인수로 받습니다.
먼저 "장려"가 데이터베이스의 키인지 확인합니다. 그렇다면 이미 데이터베이스에 있는 권장 목록을 가져 와서 새 항목을 목록에 추가 한 다음 업데이트 된 목록을 "encouragements"키 아래의 데이터베이스에 다시 저장합니다.
데이터베이스에 "장려"가 아직 포함되지 않은 경우 해당 이름의 새 키가 생성되고 새 격려 메시지가 목록의 첫 번째 요소로 추가됩니다.
delete_encouragement() 함수는 인덱스를 인수로 받습니다.
"장려"키 아래에 저장된 데이터베이스에서 장려 목록을 가져옵니다. 장려 목록의 항목 수가 색인보다 많으면 해당 색인의 목록 항목이 삭제됩니다.
마지막으로 업데이트 된 목록은 "장려"키 아래의 데이터베이스에 다시 저장됩니다.
다음은 on_message() 함수의 업데이트 된 코드입니다. 코드 다음에 새로운 섹션을 설명하겠습니다.
async def on_message(message):
if message.author == client.user:
return
msg = message.content
if msg.startswith("$inspire"):
quote = get_quote()
await message.channel.send(quote)
options = starter_encouragements
if "encouragements" in db.keys():
options = options + db["encouragements"]
if any(word in msg for word in sad_words):
await message.channel.send(random.choice(options))
if msg.startswith("$new"):
encouraging_message = msg.split("$new ",1)[1]
update_encouragements(encouraging_message)
await message.channel.send("New encouraging message added.")
if msg.startswith("$del"):
encouragements = []
if "encouragements" in db.keys():
index = int(msg.split("$del",1)[1])
delete_encouragment(index)
encouragements = db["encouragements"]
await message.channel.send(encouragements)
위의 첫 번째 새 코드 줄은 options = starter_encouragements입니다. 봇이 보낼 임의의 메시지를 선택하기 전에 사용자가 제출 한 메시지를 해당 목록에 추가 할 것이므로 starter_encouragements의 복사본을 만듭니다.
"권장"이 이미 데이터베이스 키에 있는지 확인합니다 (사용자가 하나 이상의 사용자 지정 메시지를 제출했음을 의미 함). 그렇다면, 스타터 권장 사항에 사용자 메시지를 추가합니다.
그런 다음 starter_encouragements에서 임의의 메시지를 보내는 대신 봇은 이제 옵션에서 임의의 메시지를 보냅니다.
다음 새 코드 섹션은 새 사용자 제출 메시지를 데이터베이스에 추가하는 데 사용됩니다. Discord 메시지가 "$ new"로 시작하면 "$ new"뒤의 텍스트가 새로운 격려 메시지로 사용됩니다.
코드 msg.split ( "$ new", 1) [1]은 "$ new"명령에서 메시지를 분리하고 메시지를 변수에 저장합니다. 해당 코드 줄에서 "$ new"의 공백을 기록해 둡니다. 우리는 공간 이후의 모든 것을 원합니다.
새 메시지로 update_encouragements 도우미 함수를 호출 한 다음 봇이 discord 채팅에 메시지가 추가되었음을 확인하는 메시지를 보냅니다.
세 번째 새 섹션 (위 코드 끝에 있음)은 새 Discord 메시지가 "$ del"로 시작하는지 확인합니다. 데이터베이스의 "권장 사항"목록에서 항목을 삭제하는 명령입니다.
먼저 격려라는 새 변수가 빈 배열로 초기화됩니다. 그 이유는 데이터베이스에 "장려"키가 포함되어 있지 않으면 이 코드 섹션에서 빈 배열로 메시지를 보내기 때문입니다.
"encouragement"키가 데이터베이스에 있으면 "$del"로 시작하는 Discord 메시지에서 인덱스가 분리됩니다. 그런 다음 delete_encouragement() 함수가 호출되어 삭제할 인덱스를 전달합니다. 업데이트 된 격려 목록이 격려 변수에 로드 되고 봇은 현재 목록과 함께 Discord에 메시지를 보냅니다.
최종 봇 기능
봇이 작동해야 하므로 테스트하기에 좋은 시기입니다. 이제 몇 가지 최종 기능을 추가합니다.
Discord에서 사용자가 제출 한 메시지 목록을 바로 가져 오는 기능을 추가하고 봇이 슬픈 단어에 응답하는지 여부를 끄고 켤 수 있는 기능을 추가 할 것입니다.
프로그램의 최종 코드 전체를 알려 드리고 코드 아래에서 업데이트에 대해 논의하겠습니다.
import discord
import os
import requests
import json
import random
from replit import db
client = discord.Client()
sad_words = ["sad", "depressed", "unhappy", "angry", "miserable"]
starter_encouragements = [
"Cheer up!",
"Hang in there.",
"You are a great person / bot!"
]
if "responding" not in db.keys():
db["responding"] = True
def get_quote():
response = requests.get("https://zenquotes.io/api/random")
json_data = json.loads(response.text)
quote = json_data[0]["q"] + " -" + json_data[0]["a"]
return(quote)
def update_encouragements(encouraging_message):
if "encouragements" in db.keys():
encouragements = db["encouragements"]
encouragements.append(encouraging_message)
db["encouragements"] = encouragements
else:
db["encouragements"] = [encouraging_message]
def delete_encouragment(index):
encouragements = db["encouragements"]
if len(encouragements) > index:
del encouragements[index]
db["encouragements"] = encouragements
@client.event
async def on_ready():
print("We have logged in as {0.user}".format(client))
@client.event
async def on_message(message):
if message.author == client.user:
return
msg = message.content
if msg.startswith("$inspire"):
quote = get_quote()
await message.channel.send(quote)
if db["responding"]:
options = starter_encouragements
if "encouragements" in db.keys():
options = options + db["encouragements"]
if any(word in msg for word in sad_words):
await message.channel.send(random.choice(options))
if msg.startswith("$new"):
encouraging_message = msg.split("$new ",1)[1]
update_encouragements(encouraging_message)
await message.channel.send("New encouraging message added.")
if msg.startswith("$del"):
encouragements = []
if "encouragements" in db.keys():
index = int(msg.split("$del",1)[1])
delete_encouragment(index)
encouragements = db["encouragements"]
await message.channel.send(encouragements)
if msg.startswith("$list"):
encouragements = []
if "encouragements" in db.keys():
encouragements = db["encouragements"]
await message.channel.send(encouragements)
if msg.startswith("$responding"):
value = msg.split("$responding ",1)[1]
if value.lower() == "true":
db["responding"] = True
await message.channel.send("Responding is on.")
else:
db["responding"] = False
await message.channel.send("Responding is off.")
client.run(os.getenv("TOKEN"))
코드에 추가 된 첫 번째 섹션은 starter_encouragements 목록 바로 아래에 있습니다.
if "responding" not in db.keys():
db["responding"] = True
데이터베이스에 "응답"이라는 새 키를 만들고 "참"으로 설정합니다. 이를 사용하여 봇이 슬픈 말에 응답해야 하는지 여부를 결정합니다. 프로그램 실행이 중지 된 후에도 데이터베이스가 저장되기 때문에 새 키가 아직 존재하지 않는 경우에만 생성합니다.
코드의 다음 새로운 부분은 슬픈 단어에 응답하는 섹션이 이제 if 문 : if db [ "responding"] : 안에 있다는 것입니다. 봇은 db [ "responding"] = True 인 경우에만 슬픈 단어에 응답합니다. 이 값을 업데이트하는 기능은 이 다음 섹션 이후에 제공됩니다.
다음으로, 봇이 "$ del"명령에 응답하도록 하는 코드 다음에 Discord 메시지로 전송 될 때 "$ list"명령에 응답하는 새 코드가 있습니다.
이 섹션은 격려라는 빈 목록을 만드는 것으로 시작합니다. 그런 다음 데이터베이스에 이미 권장 사항이 있는 경우 해당 권장 사항이 방금 만든 빈 목록을 대체합니다.
마지막으로 봇은 격려 목록을 Discord 메시지로 보냅니다.
마지막 새 섹션이 다음으로 나옵니다. 이 코드는 봇이 "$responding"명령에 응답하도록 합니다. 이 명령은 "true"또는 "false"의 인수를 사용합니다. 다음은 사용 예입니다. "$responding true".
코드는 먼저 value = msg.split ( "$ responding", 1) [1] (이전과 마찬가지로 "$ responding"의 공백에 유의)으로 인수를 가져옵니다. 그런 다음 데이터베이스에 "응답"키를 적절하게 설정하고 알림 메시지를 Discord로 다시 보내는 if / else 문이 있습니다. 인수가 "true"가 아닌 경우 코드는 "false"로 간주합니다.
봇 코드가 완성되었습니다! 이제 봇을 실행하고 사용해 볼 수 있습니다. 그러나 다음에 논의 할 중요한 단계가 하나 더 있습니다.
봇이 지속적으로 실행되도록 설정하는 방법
repl.it에서 봇을 실행 한 다음 실행 중인 탭을 닫으면 봇의 실행이 중지됩니다.
그러나 해결 방법이 있습니다. Repl.it은 탭이 닫힌 후에도 웹 서버를 계속 실행합니다. 그러나 웹 서버조차도 사용하지 않고 최대 1 시간 동안 만 실행됩니다.
repl.it 문서가 말하는 내용은 다음과 같습니다.
배포 된 후에는 브라우저 탭을 닫은 후에도 서버가 백그라운드에서 계속 실행됩니다. 서버는 마지막 요청 후 1 시간이 지나면 절전 단계로 들어갑니다. 잠자는 repls는 다른 요청을 받는 즉시 깨어납니다. repl을 다시 실행할 필요가 없습니다. 그러나 서버를 변경 한 경우 해당 변경 사항이 라이브 버전에 반영되었는지 확인하려면 repl을 다시 시작해야 합니다.
Repl.it은 앞으로 수면 단계에 들어 가지 않고도 코드를 지속적으로 실행할 수 있는 유료 요금제를 제공 할 것이라고 발표했습니다. 그러나 그들은 이 글을 쓰는 시점에서 그 기능을 제공하지 않습니다.
이것이 구현 될 때까지 봇을 1 시간 이상 실행하는 또 다른 방법이 있습니다. 그리고 이 방법은 repl.it의 프리 티어에서 작동합니다.
봇을 지속적으로 실행하기 위해 https://uptimerobot.com//에서 Uptime Robot이라는 또 다른 무료 서비스를 사용할 것입니다.
Uptime Robot은 5 분마다 repl.it에서 봇의 웹 서버를 ping하도록 설정할 수 있습니다. 지속적인 핑을 통해 봇은 수면 단계에 들어 가지 않고 계속 실행됩니다.
따라서 봇이 지속적으로 실행되도록 하려면 두 가지 작업을 더해야 합니다.
repl.it에서 웹 서버를 만드는 방법
웹 서버를 만드는 것은 생각보다 간단합니다.
이를 위해 프로젝트에서 keep_alive.py라는 새 파일을 생성합니다.
그런 다음 다음 코드를 추가하십시오.
from flask import Flask
from threading import Thread
app = Flask('')
@app.route('/')
def home():
return "Hello. I am alive!"
def run():
app.run(host='0.0.0.0',port=8080)
def keep_alive():
t = Thread(target=run)
t.start()
이 코드에서는 Flask를 사용하여 웹 서버를 시작합니다. 서버는 "Hello. I am alive"를 반환합니다. 그것을 방문하는 모든 사람에게. 서버는 봇과는 별도의 스레드에서 실행됩니다. 나머지는 우리 봇과 실제로 관련이 없기 때문에 여기서 모든 것을 논의하지는 않을 것입니다.
이제 이 웹 서버를 실행하려면 봇만 있으면 됩니다.
서버를 가져 오려면 main.py 상단에 다음 줄을 추가합니다.
from keep_alive import keep_alive
main.py가 실행될 때 웹 서버를 시작하려면 봇이 실행되기 직전에 두 번째에서 마지막 줄로 다음 줄을 추가합니다.
keep_alive()
이 코드를 추가 한 후 repl.it에서 봇을 실행하면 새로운 웹 서버 창이 열립니다. 웹 서버용으로 표시된 URL이 있습니다. 다음 섹션에서 사용할 수 있도록 URL을 복사합니다.
가동 시간 로봇 설정 방법
이제 5 분마다 웹 서버를 ping하도록 Uptime Robot을 설정해야 합니다. 이렇게 하면 봇이 계속 실행됩니다.
https://uptimerobot.com/에서 무료 계정을 만드십시오.
계정에 로그인 한 후 "새 모니터 추가"를 클릭하십시오.
새 모니터의 경우 모니터 유형으로 "HTTP (s)"를 선택하고 원하는 이름을 지정합니다. 그런 다음 repl.it에서 웹 서버의 URL을 붙여 넣으십시오. 마지막으로 "모니터 생성"을 클릭합니다.
끝났습니다! 이제 봇이 지속적으로 실행되어 사람들이 항상 Repl.it에서 상호 작용할 수 있습니다.
결론
이제 Python으로 Discord 봇을 만들고 클라우드에서 지속적으로 실행하는 방법을 알게 되었습니다.
discord.py 라이브러리가 할 수 있는 다른 많은 것들이 있습니다. 따라서 Discord 봇에 더 많은 기능을 제공하려면 다음 단계는 discord.py에 대한 문서를 확인하는 것입니다.
등록된 댓글이 없습니다.