8. 메시지 다루기1

chaejm55·2021년 3월 30일
1

디스코드봇

목록 보기
10/18
post-thumbnail

0. 들어가기 전에

이번 포스팅에는 디스코드 텍스트 채널에 봇이 보내는 메시지를 다루는 방법을 알아보겠다. 특히 삭제, 수정을 해보겠다.

1. discord.Message

디스코드의 메시지를 나타내는 클래스이다.

주요 attribute

  • 1) author
    메시지를 보낸 Member를 반환한다. 개인 채널이거나 해당 멤버가 채널을 나갔다면 User가 반환된다.
  • 2) channel
    메시지가 보내진 채널을 반환한다.
  • 3) id
    메시지의 id를 반환한다. 메시지를 다루는데 쓰일 수 있다.
  • 4) content
    메시지의 내용을 반환한다.

주요 method

  • 1) async delete()
    메시지를 삭제한다. 다른 사람의 메시지를 삭제하기 위해서는 manage_messages 권한이 필요하다. 삭제 딜레이를 지정할 수 있다.

  • 2) async edit()
    메시지를 수정한다. content나 embed를 파라미터로 넣어 수정한다. delete_after로 삭제 시간을 지정할 수 있다.

  • 3) async reaction() 메서드 들
    메시지에 emoji로 reaction을 추가한다.

discord.py 공식 문서

2. 코드 예시

두 메서드 모두 embed에도 적용이 가능하다.

1) edit

@bot.command(aliases=['수정'])
async def edit_msg(ctx):
   msg = await ctx.send("곧 수정 됩니다!")
   await msg.edit(content="수정 되었습니다!")

2) delete

@bot.command(aliases=['삭제'])
async def delete_msg(ctx):
   msg = await ctx.send("3초 뒤에 삭제 됩니다!")
   await msg.delete(delay=3)

3. 발생할 법할 오류

  • 1) HTTPException
    메시지 수정/삭제가 실패하였을 때 발생한다.
  • 2) Forbidden
    권한 없이 메시지를 수정하거나, 삭제할 때 발생한다.
  • 3) NotFound
    메시지가 이미 삭제되어 존재하지 않을 때 발생한다.

4. 마무리

이번엔 봇이 보낸 메시지를 다루는 방법을 알아보았다. 다음에는 유저가 보낸 메시지를 다루는 방법을 알아보겠다.

github 전체 코드

time.sleep(259200 * 2)

포스팅 한 번 건너 뛰겠습니다. 죄송합니다 ㅠㅠ😥

profile
여러가지를 시도하는 학생입니다

0개의 댓글