728x90
반응형
유저정보 받아오기
명령어를 입력한 유저의 name과 id를 받아오자
@bot.command()
async def 회원가입(ctx):
print(ctx.author.name)
print(ctx.author.id)
정상적으로 출력된다
회원가입 만들기
각각 이름과 고유번호로 userDB.xlsx에 저장하고 레벨과 돈을 설정할 예정이다
이를 위한 파일을 또 따로 만들어주자
#user.py
from openpyxl import load_workbook, Workbook
c_name = 1
c_id = 2
c_money = 3
c_lvl = 4
default_money = 10000
wb = load_workbook("userDB.xlsx")
ws = wb.active
def signup(_name, _id):
ws.cell(row=2, column=c_name, value=_name)
ws.cell(row=2, column=c_id, value =_id)
ws.cell(row=2, column=c_money, value = default_money)
ws.cell(row=2, column=c_lvl, value = 1)
wb.save("userDB.xlsx")
@bot.command()
async def 회원가입(ctx):
signup(ctx.author.name, ctx.author.id)
아래와 같이 userDB.xlsx에 저장되었다.
id가 이상하게 나오긴 하지만 코드상에서 출력해보면 정상적으로 출력된다.
현재 상태에서는 계속 같은 장소에 데이터가 덮어쓰기만 될테니
위에서부터 빈 줄을 찾아서 row에 넣어주도록 하겠다
...
def checkRow():
for row in range(2, ws.max_row + 1):
if ws.cell(row,1).value is None:
return row
break
#return ws.max_row 불안정하지만 훨씬 간단함
def signup(_name, _id):
_row = checkRow()
ws.cell(row=_row, column=c_name, value=_name)
ws.cell(row=_row, column=c_id, value =_id)
ws.cell(row=_row, column=c_money, value = default_money)
ws.cell(row=_row, column=c_lvl, value = 1)
...
ws.max_row는 값이 있는 가장 마지막 row를 가져온다
디코 채팅방에서 !회원가입 을 입력하면 메세지와 함께 엑셀 파일에 추가된것을 볼 수 있다
다음은 중복 가입을 방지하기 위한 조건문을 작성한다
#user.py
...
def checkName(_name, _id):
for row in range(2, ws.max_row+1):
if ws.cell(row,1).value == _name and ws.cell(row,2).value == _id:
break
return False
else:
return True
break
...
#main.py
...
@bot.command()
async def 회원가입(ctx):
#print(ctx.author.name)
#print(ctx.author.id)
if checkName(ctx.author.name, ctx.author.id):
signup(ctx.author.name, ctx.author.id)
await ctx.send("회원가입이 완료되었습니다.")
else:
await ctx.send("이미 가입하셨습니다.")
...
위 코드를 각각 추가한 뒤 회원가입을 하면 이미 가입했다는 메세지가 나온다
또 테스트할 때마다 매번 엑셀을 열고 데이터를 지운다음 엑셀을 닫는게 귀찮아서 리셋명령어도 만들었다
#user.py
...
def delete():
ws.delete_rows(2,ws.max_row)
wb.save("userDB.xlsx")
#main.py
...
@bot.command()
async def reset(ctx):
delete()
...
이제 회원가입을 할 수 있다
원래는 좀 더 개발하려고 했으나 시간이 없는 관계로 유저 간의 돈 거래는 다음에 만들어 보겠다
'프로젝트 > 디스코드 봇' 카테고리의 다른 글
디스코드 봇 만들기#8 - 송금 (0) | 2021.03.05 |
---|---|
디스코드 봇 만들기#7.5 - 내정보 확인 (0) | 2021.02.26 |
디스코드 봇 만들기#6 - 게임봇 계획 (0) | 2021.02.12 |
디스코드 봇 만들기#5 - 음악재생 (2) | 2021.02.05 |
디스코드 봇 만들기#4 - 음성채널 (7) | 2021.01.29 |