파이썬 업무 자동화 #13파이썬 자동화 로그·재시도·디스코드 실패 알림 만들기 - 조용히 멈추는 스크립트 잡기
아침에 구글 시트를 열었는데 어제 숫자가 그대로예요. 자동화가 아예 실행되지 않은 건지, 데이터를 읽다가 멈춘 건지, 마지막 저장만 실패한 건지 알 수가 없죠.
최신순
아침에 구글 시트를 열었는데 어제 숫자가 그대로예요. 자동화가 아예 실행되지 않은 건지, 데이터를 읽다가 멈춘 건지, 마지막 저장만 실패한 건지 알 수가 없죠.
지난 #26편에서는 버튼 하나로 1:1 상담 채널이 자동으로 생기는 티켓 시스템을 만들었어요. 그런데 이걸 실제 서버에 붙여보면 하루 만에 문제가 하나 튀어나옵니다.
지난 #23편에서는 JSON을 버리고 aiosqlite로 봇의 데이터 계층을 제대로 다시 깔았죠. 오늘은 조금 결이 다른 글이에요. 새 기능을 만드는 게 아니라, 곧 우리 봇이 고장 날 수도 있는 변경을 미리 막는 글입니다 🛡️
지난 #17편에서는 RAG로 우리 서버 전용 FAQ 답변봇을 만들었죠. 문서를 읽고 답해주는 똑똑한 봇이었는데요, 오늘은 분위기를 바꿔서 서버원들의 의견을 모으는 기능을 만들어볼게요. 바로 투표(Poll) 입니다!
지난 #15편에서는 슬래시 명령어를 폴더처럼 묶는 그룹(Group)을 배웠어요. 그런데 지금까지 우리 봇은 전부 "누가 명령어를 쳐야" 움직였죠? 이번 #16편에서는 드디어 봇이 먼저 말을 겁니다.
이 블로그에서 디스코드 봇 시리즈를 쭉 다뤄왔는데요, "디스코드는 안 쓰는데 폰으로 알림 받는 봇은 없나요?" 하는 분들께 딱 맞는 게 바로 텔레그램 봇이에요. 서버 상태 알림, 크롤링 결과 전송, 나만의 비서 봇까지 — 디스코드 봇보다 준비 과정이 훨씬 간단해서 30분이면…
지난 #9편에서는 봇에 AI(Claude·ChatGPT API)를 연동해서 대화하는 봇을 만들어봤죠? 이번 편에서는 우리 봇을 글로벌 봇으로 업그레이드해볼 거예요. 바로 다국어(i18n) 지원입니다!
디스코드 봇에서 슬래시 명령어를 사용하려면 discord.appcommands를 활용하면 됩니다. intents = discord.Intents.default() bot = commands.Bot(commandprefix="/", intents=intents)
예를 들어… 이런 식으로 하나의 명령어 그룹 안에 여러 개의 기능을 넣는 거죠! class UserCommandGroup(appcommands.Group): def init(self): super().init(name="user", description="유저 관련 명령어…
이번에는 사용자 입력값을 받아서 동작하는 Slash Command 를 만들어볼게요. 예를 들면 /say message:안녕 처럼 말이죠! 이번에도 Python과 discord.py 를 기반으로 합니다. 먼저 아래 코드를 참고해주세요👇
오늘은 디스코드 봇 만들기 시리즈 중에서도, 요즘 대세인 슬래시 커맨드(Slash Command) 를 만들어보려고 합니다. /명령어 형태로 입력하는 그거 아시죠? 일반 텍스트 명령어보다 훨씬 깔끔하고, 자동완성도 돼서 요즘은 거의 필수 기능이에요!
특정 채널에 메시지를 보내는 기능은 디스코드 봇의 다양한 용도에 매우 유용합니다. 이에 따른 장단점은 다음과 같습니다: 다음은 특정 채널에 메시지를 보내는 코드의 사용 예시입니다.
디스코드 봇 임베드는 디스코드 서버에서 메시지에 풍부한 형식과 정보를 추가하는 기능입니다. Python을 사용하여 디스코드 봇을 개발하고, 해당 봇에 임베드 기능을 추가할 수 있습니다. 임베드는 텍스트, 이미지, 링크 등 다양한 요소를 포함할 수 있어서 메시지를 더욱 멋지게…
디스코드 사용자라면 파이썬과 Discord.py를 이용해 간단하게 봇을 만들어 볼 만한 가치가 있습니다. 오늘은 그 중에서도 봇으로 공지 명령어를 만드는 방법을 소개하겠습니다.
Discord 코드 입니다. import discord from datetime import datetime import torch from torch import autocast
""" 작성일자 2023-09-18 작성인 : Mojangcam """ class Resistor(object): def \\init\\(self) -> None: