Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # bot.py
- from urllib.request import urlopen
- from bs4 import BeautifulSoup
- import discord
- import sqlite3
- from discord.ext import commands
- client = discord.Client()
- prefix = "!"
- @client.event
- async def on_message(message):
- # 자기 채팅에 명령어가 실행되지 않도록 예외 지정
- if message.author == client.user:
- return
- channel = message.channel
- emoji = discord.Emoji
- if message.content.startswith(prefix):
- # 명령어 처리 헨들러 (인덱스 0번 - 메인 커맨드)
- argument = message.content[len(prefix):].split(" ")
- # 언급
- if argument[0] == "언급":
- msg = '안녕하세요! {0.author.mention}'.format(message)
- await channel.send(msg)
- # 헨들러
- elif argument[0] == "헨들러":
- await channel.send(f'헨들러 테스트 : \n{argument}')
- ################################################################################################################
- elif argument[0] == "게임":
- # user.db 데이터배이스 열람
- try:
- conn = sqlite3.connect('user.db')
- conn2 = sqlite3.connect('weapon.db')
- cur = conn.cursor()
- wep = conn2.cursor()
- # SQLite3 테이블 생성
- try:
- cur.execute(
- 'CREATE TABLE user_data (ID VARCHAR(18) NOT NULL UNIQUE, Money INTEGER NOT NULL, Level INTEGER NOT NULL, PRIMARY KEY(ID));')
- except sqlite3.OperationalError as e:
- print(f'Victim:{message.author.id} - 테이블이 이미 존제함')
- # 신규 유저 DB 생성
- try:
- cur.execute('INSERT INTO user_data (ID, Money, Level) VALUES(?, ?, ?);',
- (message.author.id, 10000, 0))
- except sqlite3.IntegrityError as e:
- print(f'Victim:{message.author.id} - 튜플 중복')
- conn.commit()
- if len(argument) == 1:
- embed = discord.Embed(title="《 강화게임 도움말 》", color=0xfcb90a)
- embed.set_thumbnail(
- url='http://drive.google.com/uc?export=view&id=1vfeYEF7Zbji-cC_gfHJsCjhb39AFDH0b')
- embed.add_field(name='!게임 강화', value='무기 강화를 합니다.\n', inline=True)
- embed.add_field(name='!게임 프로필', value='개인정보를 확인합니다.', inline=True)
- embed.add_field(name='!게임 확률', value='다음 무기로 강화될 확률을\n확인합니다.', inline=True)
- embed.add_field(name='!게임 순위', value='모든 플레이어의 무기 순위를\n확인합니다.', inline=True)
- await channel.send(embed=embed)
- elif argument[1] == "프로필":
- cur.execute(f"SELECT * FROM user_data WHERE ID = {message.author.id};")
- prof = cur.fetchall()
- wep.execute(f"SELECT * FROM weapon_data WHERE Level = {prof[0][2]};")
- img = wep.fetchall()
- embed = discord.Embed(title=f"《 강화게임 프로필 : {message.author} 》", color=0xfcb90a)
- embed.set_thumbnail(url=f'{img[0][3]}')
- embed.add_field(name='현재 소지 금액', value=f"{format(prof[0][1], ',')}원", inline=True)
- embed.add_field(name='현재 무기 레벨', value=f"Lv.{prof[0][2]} ({img[0][1]})", inline=True)
- await channel.send(embed=embed)
- finally:
- conn.close()
- conn2.close()
- ################################################################################################################
- elif argument[0] == "애니":
- if len(argument) == 1 :
- await channel.send(f"`{prefix}애니 순위`")
- elif argument[1] == "순위" :
- html = urlopen("https://laftel.net/rank/animation")
- bsObject = BeautifulSoup(html, "lxml")
- Matrix = [[""] * 2 for i in range(20)]
- try :
- count = 0
- row = 0
- fill = 1
- for result in bsObject.find_all(['a', 'div'], class_=['title', 'point']):
- if count < 1:
- count += 1
- continue
- if (fill % 2) == 1:
- Matrix[row][0] = result.get_text()
- else:
- Matrix[row][1] = result.get_text()
- row += 1
- fill += 1
- embed = discord.Embed(title="《 애니 순위 》", color=0xfcb90a)
- for row in range(0, len(Matrix)):
- embed.add_field(name=f'**%2d.** {Matrix[row][0]}' % (row + 1), value=f" {Matrix[row][1]}", inline=False)
- await channel.send(embed=embed)
- except IndexError :
- await channel.send("라이브러리를 불러오는데 문제가 발생했습니다!")
- ############################################################################################################
- elif argument[1] == "검색":
- if len(argument) > 2 :
- search = ""
- count = 1
- for text in argument[2:] :
- search = search + f"{text}"
- if len(argument[2:]) > count:
- search = search + "%20"
- count += 1
- html = urlopen(f"https://laftel.net/search?keyword={search}")
- bsObject = BeautifulSoup(html, "lxml")
- await channel.send(search)
- else :
- msg = '검색할 제목을 입력해주세요 . . . <:think:638342427857518602>'.format(message)
- for result in bsObject.find_all('a', class_='item-title'):
- result.get_text()
- await channel.send(msg)
- # 미완성
- # 명령어 찾지 못함
- else:
- msg = '명령어를 찾을 수 없네요 . . . <:think:638342427857518602>'.format(message)
- await channel.send(msg)
- @client.event
- async def on_ready():
- print(f'성공적으로 {client.user} 계정이 로그인되었습니다.')
- client.run("TOKEN")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement