bot.py를 수정해서 notice 함수를 start, cancel할 수 있도록 만들기.
이를 통해 더 많은 기능을 제공할 수 있도록
이전 코드에서도 tasks.loop()를 사용했지만 이 상황에서는 cancel이 되지 않았다.
주어진 레시피를 조금 바꾸는 방식으로 구현을 했다.
from discord.ext import tasks, commands
class MyCog(commands.Cog):
def __init__(self):
self.index = 0
self.printer.start()
def cog_unload(self):
self.printer.cancel()
@tasks.loop(seconds=5.0)
async def printer(self):
print(self.index)
self.index += 1
여러 서버에 봇을 등록하려면 어떻게 해야 하나 생각했는데 그냥 연결된 서버를 다 저장하는 방식을 썼다.
저장을 딕셔너리로 해서 나중에 무거울 수도 있겠지만 탐색을 해서 거르기 위해 이를 사용했다.
새로운 서버를 저장.
if message.channel not in channels:
channels[message.channel] = 1
가져온 정보를 모든 서버에 출력
if cnt:
for ch in channels:
await ch.send("", embed=temp)
봇의 실행과 함께 정보를 가져올 수 있도록 생성자에 start()를 넣어 주었다.
bot에서의 개체 생성
class MyClient(discord.Client):
async def on_ready(self):
self.task = looping.MyCog()
self.work = 1
looping에서 실행
class MyCog(commands.Cog):
def __init__(self):
self.info = [dict() for _ in range(4)]
self.prev_date = "22.02.09"
self.notice.start()
백그라운드에서의 task를 통해 여러 기능을 만들 수 있을 것 같다.
다음 해볼 것은 시총 상위 30개 정도의 암호화폐의 움직임을 나타내는 지표를 만들어 특정 변화율에 따라 자동으로 알림을 주도록 하는 것을 만들까 생각중이다.
주식에서는 코스피, 코스닥이 좋은 기준이 되어주는데 암호화폐 시장은 내가 원하는 그런 지표가 없어서 한 번 찾아봐야겠다.
내가 제대로 안 읽어봤을 뿐 존재했다. 이거 자동적으로 알림 보내는 거도 찾아야겠다.