티스토리 뷰

개발

개발일지 1. 디스코드 봇 Solved_Coin 제작

KWG07(joseph0528) 2021. 9. 3. 23:53

할 게 없어서 다쿤이라는 분이 만드신 Codeforces coin보고 솔브드 코인도 있으면 좋겠다 싶어서 계획만 해두다가 이제야 만들기 시작

앞으로 Solved_Coin 개발일지?(개발일지라고 해야될지는 모르겠지만)를 계속 올릴 예정

이번에는 딱히 한건 없고 대충 db만 구현

솔브드 코인이라고 하면 레이팅으로만 해서 계속 올라가는 그래프만 나오겠지라고 할 수 있지만 레이팅, 클래스, 문제수, 운 하고 나중에 추가 예정인 것들까지 해서 하락도 있는 그래프를 만들 예정 레이팅, 클래스, 문제수가 떨어지면 하락할 수는 있지만 그럴 일이 자주 있지는 않기 때문에 운의 요소도 넣음

+ 주식 처럼 등록되어있는 사람들 중 그 사람 주식을 사는데 필요한 비용을 내고 주식을 사는 방식도 추가 예정

비용은 추후 정함

1대1 또는 전에 만든 백준 연습 모드로 돈을 모으는 시스템도 추가 예정

 

한 게 이게 다인데 이름, 레이팅, 클래스, 돈, 문제수, gain(이득률이다) , array(유저:주식 개수)

db를 처음 써봐서 좀 걸렸고 마지막 array에서 {}를 꺼내올때 문자로 꺼내와 져서 dict으로 바꾸는 작업에서 좀 더 걸림

(코드는 간단)

import discord
from discord.http import Route
import requests
import random
import urllib.request as req
from bs4 import BeautifulSoup
import emoji
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from discord.utils import get
import math
import json
from urllib.error import URLError,HTTPError
import asyncio
import sqlite3
tier={"b5":1,"b4":2,"b3":3,"b2":4,"b1":5,\
        "s5":6,"s4":7,"s3":8,"s2":9,"s1":10,\
        "g5":11,"g4":12,"g3":13,"g2":14,"g1":15,\
        "p5":16,"p4":17,"p3":18,"p2":19,"p1":20,\
        "d5":21,"d4":22,"d3":23,"d2":24,"d1":25,\
        "r5":26,"r4":27,"r3":28,"r2":29,"r1":30}
tierst=["b5","b4","b3","b2","b1",\
        "s5","s4","s3","s2","s1",\
        "g5","g4","g3","g2","g1",\
        "p5","p4","p3","p2","p1",\
        "d5","d4","d3","d2","d1",\
        "r5","r4","r3","r2","r1"]
tierimagelink=["<:unranked:828174300338585600>","<:bronze5:828174299247673345>","<:bronze4:828174298963116092>","<:bronze3:828174299269169183>","<:bronze2:828174300301099028>","<:bronze1:828174299239415828>",\
    "<:silver5:828174300502294549>","<:silver4:828174300057698325>","<:silver3:828174301088710716>","<:silver2:828174300329541632>","<:silver1:828174300120088619>",\
    "<:gold5:828174299843788811>","<:gold4:828174299630010398>","<:gold3:828174299944452116>","<:gold2:828174299722547200>","<:gold1:828174299210055711>",\
    "<:platinum5:828174300355493888>","<:platinum4:828174299750858762>","<:platinum3:828174300225077258>","<:platinum2:828174300401369088>","<:platinum1:828174299713765386>",\
    "<:diamond5:828174299419901972>","<:diamond4:828174299264843816>","<:diamond3:828174298950008833>","<:diamond2:828174299222245386>","<:diamond1:828174299298005002>",\
    "<:ruby5:828174300305293422>","<:ruby4:828174299772616715>","<:ruby3:828174300392718346>","<:ruby2:828174299901984768>","<:ruby1:828174300338323506>","<:master:828199362868936724>"]
tiercolor=[0x2d2d2d, 0xad5600, 0x435f7a, 0xec9a00, 0x27e2a4, 0x00b4fc, 0xff0062, 0xFFFFFF]
conn=sqlite3.connect("SolvedCoin.db",isolation_level=None)
db=conn.cursor()
db.execute("CREATE TABLE IF NOT EXISTS table1 \
    (name text, rating integer, class integer, money integer, problem integer, gain integer, array stock)")
client=discord.Client()
@client.event
async def on_ready():
    #sq=token.f(0)
    #print(sq)
    print("Start {0.user}".format(client))
@client.event
async def on_message(message):
    if message.author==client.user:return

    
    if message.content.startswith("~attend"):
        try:
            ex=message.content[8:].split()
            url='https://solved.ac/api/v3/search/suggestion?query='+ex[0]
            res=requests.get(url)
            soup=str(BeautifulSoup(res.text,'html.parser'))
            #ss=soup.find('users')
            #oo=json.dumps(soup)
            #print(oo)
            #soup=soup.replace("'","\"")
            #print(oo[0])
            jsonData=json.loads(soup)
            #print(jsonData)
            #print(jsonData["users"])
            #print(jsonData["users"][0]["rating"],jsonData["users"][0]["class"])
            param2 = ex[0]
            db.execute("SELECT * FROM table1 WHERE name='%s'" % param2)  # %s %d %f
            #print('joseph05281', db.fetchone())
            #print('joseph05281', db.fetchall())
            if db.fetchall()==[]:
                users=jsonData["users"][0]
                db.execute("INSERT INTO table1 VALUES(?,?,?,?,?,?,?)",(ex[0],int(users["rating"]),int(users["class"]),0,int(users["solvedCount"]),0,json.dumps({})))
                db.execute("SELECT * FROM table1 WHERE name='%s'" % ex[0])  # %s %d %f
                #print(json.loads(db.fetchall()[0][6])["asd"])#db에 있는 stock 배열이 문자로 되어있는데 문자를 다시 배열로 변환
                await message.channel.send("추가되었습니다")
            else:
                await message.channel.send("이미 추가되어있습니다")
        except:
            await message.channel.send("제대로 입력해주세요")

피드백은 언제나 환영입니다

'개발' 카테고리의 다른 글

프로세싱으로 게임 만들기  (11) 2021.10.02
스와이프 벽돌깨기 게임 제작  (0) 2021.09.15
오랜만에 올리는 디코 봇 현황  (1) 2021.08.08
디스코드 봇 업데이트  (0) 2021.05.15
2048게임 제작  (5) 2021.02.28
댓글