목록Python (9)
변명은 만개 결과는 한개
에러로그 전문 ↓ 더보기 Ignoring exception in command "커맨드명": Traceback (most recent call last): File "C:\Users\PC\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped ret = await coro(*args, **kwargs) File "c:\bot\EPPN\Inven-bot\invenBot.py", line 120, in "커맨드명" cur.execute( sqlite3.OperationalError: near "테스트": syntax error The above exception was t..
메시지에 이모지 받아 처리하기 디스코드 봇 (discord.py) 을 통해 특정 메시지에 부여되는 이모지에 따라 원하는 동작을 실행하는 메시지 이모지 처리방법 두 가지에 대해 예제와 함께 다룹니다 wait_for 를 이용하여 특정 이모지 부여 1회 대기 및 액션 취하기 bot event on_raw_reaction_add 를 이용하여 이모지 부여에 따른 액션 취하기 1️⃣ wait_for 를 이용하여 특정 이모지(🙌) 부여 1회 대기 및 액션 취하기 1. 메시지 생성 및 가이드 이모지 부여 msg = await.channel.send("Sample message") await msg.add_reaction('🙌') 메시지를 생성하는 동시에 msg.add_reaction() 으로 유저가 손쉽게 이모지를 부..
파이썬 코드들을 보는 와중에 member = member or ctx.author 라는 처음보는 `or` 사용이 눈에 띄어 테스트해보았다. >>> num = 1 or 3 >>> print(num) 1 위 연산 및 할당의 정확한 명칭은 잘 모르겠지만, `=` 할당자 사용 이후에 순차적인 연산에서 True 인 경우 바로 그 값으로 변수에 할당해주는것으로 보인다 :) >>> num = None or 4 >>> print(num) 4 >>> num = 3 and None >>> num >>> num = 3 and 2 >>> num 2 >>> num = True and 44 and True >>> num True `and` 또한 비슷하나, `=` 할당자 이후인 우측 항에서 모든 값이 True 인 경우 마지막 비교..
결론은 포스트 최하단에 있습니다 :) 서론 처음에 디스코드 python 봇 코드를 본 뒤 조금 만지작 거리다 의아했던점은 @bot.command() 와 @bot.event 의 on_message 이벤트는 같이 쓰지 못하는걸까? 였다. 그도 그럴것이, 1 2 3 4 5 6 7 8 9 @bot.command() async def ABC(ctx): print("ABC 커맨드 호출 :)") pass @bot.event async def on_message(message): print("on_message 이벤트 호출 :)") pass cs 일때, ABC 커맨드는 호출되지 않고 on_message 이벤트만 호출되었기 때문이다. 아니면, @bot.command() 와 @bot.event 가 양립하지 못하는건가? ㅎ..
들어가며 제가 소속되어있는 디스코드 커뮤니티에서는 3개월간 텍스트채널에서 아무런 활동을 하지 않는 회원을 휴면 회원으로 간주하고 GrayMember Role을 부여합니다. 기존에는 기회가 있을 때마다 관리자님들이 모여 일일이 확인하며 진행하였는데, 이를 봇으로 진행하면 실수도 없고 좋을 것 같다는 의견이 있어 고찰해보기로 하였습니다. 첫 시도 디스코드에는 (텍스트)채널 단위로 원하는만큼의 텍스트 내역을 볼 수 있는 history 라는 API가 존재하는데, 부끄럽지만 처음에는 단순하게 Member in channel.history(limit=세달): 의 느낌으로 접근했다가, 무수히 많은 멤버에 대한 Worst case (GRAY 후보 멤버 한사람당 3시간)의 말도 안되는 연산시간으로 포기했습니다. 두번째 ..
최근 팀에서 휴면 계정을 확인하는 봇에 대한 요청이 있어서, 몇일동안 밤늦게 자며 작업하였다. 진행하며 시간을 정말 많이 소비한 두가지 포인트가 있는데, 첫번째는 "파일 전송시 에러 발생" 이며, 두번째는 "다수 인원에 대한 속도 최적화" 였다. 우선 이번 게시글은 파일 전송시의 에러에 대해서만 다룰 예정이다. 두번째는 시간나면 천천히.. 어쨌든 커맨드를 받을 시 봇이 특정 파일을 요청자에게 DM 으로 Sending 해주는 기능이었는데, 이상하게도 "한줄 전송은 되지만 두줄 이상 전송은 불가능" 하였다. 현상은 "커맨드를 수신한 뒤에도 프롬프트에서 가만히 멍때리다 오류메세지 뱉기" 였고, 정확한 오류 메세지는 아래와 같았다 더보기 Ignoring exception in command getList .....
import discord client = discord.Client() token = "YOUR_BOT_TOKEN" @client.event async def on_ready(): print("logged in as ") #화면에 봇의 아이디, 닉네임 출력 print(client.user.name) print(client.user.id) print("==============") # 디스코드에는 현재 본인이 어떤 게임을 플레이하는지 보여주는 기능이 있습니다. # 이 기능을 이용하여 봇의 상태를 간단하게 출력 가능합니다. game = discord.Game("with the API") await client.change_presence(status=discord.Status.idle, activity=g..
첫번째로는 해당 패키지를 정말 제대로 설치했느냐부터 확인해야함. 나처럼 discord package 의 경우는 pip install -U discord.py 와 같이. 두번째로는 window 기준 "Ctrl + Shift + P" 단축키로 "command palette" 를 연 다음 위와 같이 Select Interpreter 선택 후 요런 ( 첫번째에서 진행한, 설치되어있는,)사용하려고하는 interpreter 선택하면 잘 나온다. :D 아마 이전에 anaconda 땜에 VS code 썼던일이 있어서 인터프리터가 anaconda의 vir env 로 맞춰져있었는듯(...) 끝