import discord , asyncio , datetime , sys , os
from parser import *
def main():
client = discord.Client()
#명령어 목록
Command_list = (
"```css\n"
"[inhun_bot Command List]\n"
"$a - 도움말\n"
"$b - 버전 정보\n"
"$d - 현재 시각\n"
"$f - 내일 급식\n"
"$g - 급식 식단\n"
"```"
)
#급식안내
meal_notice = (
"```css\n"
"[-] 2018년 1월 2일 인 경우 18012 로 보낼 것.\n"
"[-] 2018년 10월 1일 인 경우 18101 로 보낼 것.\n"
"```"
)
@client.event
async def on_member_join(member):
fmt = ' {1.name} 에 오신걸 환영합니다, {0.mention} 님'
channel = member.server.get_channel("429208403118653440")
await client.send_message(channel, fmt.format(member, member.server))
await client.send_message(member, "공지 읽어주세요")
@client.event
async def on_member_remove(member):
channel = member.server.get_channel("429208403118653440")
fmt = '{0.mention} 님이 서버에서 나가셨습니다.'
await client.send_message(channel, fmt.format(member, member.server))
@client.event
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('---------')
await client.change_presence(game=discord.Game(name="$a for help"))
@client.event
async def print_get_meal(local_date, local_weekday, message):
l_diet = get_diet(2, local_date, local_weekday)
d_diet = get_diet(3, local_date, local_weekday)
if len(l_diet) == 1:
embed = discord.Embed(title="No Meal", description="급식이 없습니다.", color=0x00ff00)
await client.send_message(message.channel, embed=embed)
elif len(d_diet) == 1:
lunch = local_date + " 중식\n" + l_diet
embed = discord.Embed(title="Lunch", description=lunch, color=0x00ff00)
await client.send_message(message.channel, embed=embed)
else:
lunch = local_date + " 중식\n" + l_diet
dinner = local_date + " 석식\n" + d_diet
embed= discord.Embed(title="Lunch", description=lunch, color=0x00ff00)
await client.send_message(message.channel, embed=embed)
embed = discord.Embed(title="Dinner", description=dinner, color=0x00ff00)
await client.send_message(message.channel, embed=embed)
@client.event
async def on_message(message):
if message.content.startswith('$a'):
await client.send_message(message.channel, Command_list)
elif message.content.startswith('$b'):
embed = discord.Embed(title="Bot Version", description="updated", color=0x00ff00)
embed.add_field(name="Version", value="2.4.3", inline=False)
await client.send_message(message.channel, embed=embed)
elif message.content.startswith('$d'):
dt = datetime.datetime.now()
local_time = dt.strftime("%Y년 %m월 %d일 %H시 %M분 %S초")
embed = discord.Embed(title="Local Time", description=local_time, color=0x00ff00)
await client.send_message(message.channel, embed=embed)
elif message.content.startswith('$f'):
f_dt = datetime.datetime.today() + datetime.timedelta(days=1)
meal_date = f_dt.strftime("%Y.%m.%d")
whatday = f_dt.weekday()
await print_get_meal(meal_date, whatday, message)
elif message.content.startswith('$g'):
request = meal_notice + '\n' + '날짜를 보내주세요...'
request_e = discord.Embed(title="Send to Me", description=request, color=0xcceeff)
await client.send_message(message.channel, embed=request_e)
meal_date = await client.wait_for_message(timeout=15.0, author=message.author)
#입력이 없을 경우
if meal_date is None:
longtimemsg = discord.Embed(title="In 15sec", description='15초내로 입력해주세요. 다시시도 : $g', color=0xff0000)
await client.send_message(message.channel, embed=longtimemsg)
return
meal_date = str(meal_date.content) # 171121
meal_date = '20' + meal_date[:2] + '.' + meal_date[2:4] + '.' + meal_date[4:6] # 2017.11.21
s = meal_date.replace('.', ', ') # 2017, 11, 21
#한자리수 달인 경우를 해결하기위함
if int(s[6:8]) < 10:
s = s.replace(s[6:8], s[7:8])
ss = "datetime.datetime(" + s + ").weekday()"
try:
whatday = eval(ss)
except:
warnning = discord.Embed(title="Plz Retry", description='올바른 값으로 다시 시도하세요 : $g', color=0xff0000)
await client.send_message(message.channel, embed=warnning)
return
await print_get_meal(meal_date, whatday, message)
client.run('your_token_here')
#대기 시간 초과로 봇이 종료되었을 때 자동으로 재실행을 위함
#import sys, os
executable = sys.executable
args = sys.argv[:]
args.insert(0, sys.executable)
print("Respawning")
os.execvp(executable, args)
if __name__ == '__main__':
main()
//////////////////////////////////////////////////////////////////////
import discord
import requests
from bs4 import BeautifulSoup
import datetime
import re
now = str(datetime.datetime.now())
day = now[:4] + now[5:7] + now[8:10]
print(day)
# week = [0~4]
req = requests.get("http://school.cbe.go.kr/chungjuja-e/M01040504/list?ymd=")
# print(req.text)
soup = BeautifulSoup(req.text, "html.parser")
# print(soup)
element = soup.find_all("tr")
vData = []
for i in range(len(element)):
pv = element[i].find_all('td')
vData.append(pv)
c = 0
for i in range(1, len(vData)):
for j in range(1, len(vData[i])):
pv = vData[i][j]
if len(pv)>0:
c+=1
if int(now[6:8]) < 10:
vData = vData.replace(now[6:8], now[7:8])
#element = element[3].find_all('td')
#print(element[3])
#element = element[5] # num
element = str(element)
element = element.replace('[', '')
element = element.replace(']', '')
element = element.replace('<br/>', '\n')
element = element.replace('<td class="textC last">', '')
element = element.replace('<td class="textC">', '')
element = element.replace('</td>', '')
element = element.replace('(h)', '')
element = element.replace('.', '')
element = re.sub(r"\d", "", element)
element = element.split('\n')
data = ''
for i in range(len(element)):
#print(i, element[i])
if '<li>' in element[i]:
#print(element[i])
v = element[i]
v=v[4:]
'<li>'
v=v[:-5]
text = '&'
v = v.replace(text, "&")
#print(text)
'</li>'
data += v +'\n'
#data.append(element[i])
print(data)
print(element)
element = data
class chatbot(discord.Client):
# 프로그램이 처음 실행되었을 때 초기 구성
async def on_ready(self):
# 상태 메시지 설정
# 종류는 3가지: Game, Streaming, CustomActivity
game = discord.Game("YW봇 작동")
# 계정 상태를 변경한다.
# 온라인 상태, game 중으로 설정
await client.change_presence(status=discord.Status.online, activity=game)
# 준비가 완료되면 콘솔 창에 "READY!"라고 표시
print("READY")
# 봇에 메시지가 오면 수행 될 액션
async def on_message(self, message):
# SENDER가 BOT일 경우 반응을 하지 않도록 한다.
if message.author.bot:
return None
# message.content = message의 내용
if message.content == "!밥":
# 현재 채널을 받아옴
channel = message.channel
# 답변 내용 구성
msg = element
# msg에 지정된 내용대로 메시지를 전송
await channel.send(msg)
return None
if __name__ == "__main__":
client = chatbot()
client.run("ODIxMzExOTY0OTUyMjY0NzY0.YFB4Xw.3QwR70Bl7WkdFmKRdHwWqxopVXE")
top of page
실제 작동 상태를 확인하려면 라이브 사이트로 이동하세요.
210415
210415
댓글 0개
좋아요
댓글(0)
bottom of page