python 정시 qq 메시지 발송 실현
1.소프트웨어 버 전:
2.설치 의존 환경
pymysql 설치:pip install pymysqlqqbot 설치:pip install qqbot
3.데이터베이스 조작
데이터 베 이 스 는 아주 간단 합 니 다.자바 와 비슷 합 니 다.스스로 초보 튜 토리 얼 에 가서 기초 문법 을 보면 됩 니 다.
#coding: utf-8
import pymysql # pymysql
db = pymysql.connect("localhost","root","root","info_db" ) #
cursor = db.cursor()
#
def insertSchedule(schedule):
insertsql = "insert into dutyschedule_tb(worktime,name) values(%s,%s)"
try:
# sql
cursor.execute(insertsql,(schedule['worktime'],schedule['name']))
db.commit()
except Exception:
db.rollback()
raise Exception
#
def deleteSchedule():
deletesql = ""
try:
cursor.execute(deletesql)
db.commit()
except Exception:
db.rollback()
def updateSchedule(user):
updatesql = ""
try:
cursor.execute(updatesql)
db.commit()
except Exception:
db.rollback()
#
def findScheduleByNewTime():
selectsql = "SELECT * FROM dutyschedule_tb where NOW() <= date_format(worktime,'%Y-%m-%d %H:%i:%S') ORDER BY worktime ASC;"
try:
cursor.execute(selectsql)
results = cursor.fetchone()
schedule = {}
schedule['worktime'] = results[1]
schedule['name'] = results[2]
schedule['content'] = results[3]
return schedule
except Exception:
return None
4.qqbot 로그 인 정보 설정설정 하지 않 아 도 됩 니 다.설정 하지 않 으 면 매번 코드 를 스 캔 하여 로그 인 하 는 것 입 니 다.그러나 이것 은 Linux 시스템 에서 사용 하기 어렵 습 니 다.저 는 설명 에 따라 로그 인 QR 코드 를 고정 qq 메 일 로 보 내 는 것 으로 설정 을 바 꾸 었 습 니 다.qqbot 모듈 은 GitHub 에 있 습 니 다.모듈 설명 을 보 세 요qqbot
설정 파일 은 기본적으로 사용자 디 렉 터 리 에 있 는.qqbot-tmp/v 2.3.conf,linux 와 유사 합 니 다.
{
# QQBot
# qqbot -u somebody , :
# -> -> somebody ->
# qqbot , :
# -> ->
"fantasy" : {
# , qqbot
# QQBot-term (HTTP-API) ( IP 127.0.0.1 )
# 0 ( qq HTTP-API )。
"termServerPort" : 8188,
# http ip, ip
"httpServerIP" : "",
# http
"httpServerPort" : 8189,
# QQ
"qq" : " qq",
#
"mailAccount" : " ",
# IMAP/SMTP ,
"mailAuthCode" : " ",
#
"cmdQrcode" : False,
# /
"debug" : False,
# QQBot
"restartOnOffline" : True,
# qqbot ( daemon )
"daemon": False,
# QQBot
"startAfterFetch" : False,
#
"pluginPath" : ".",
#
"plugins" : [],
# ( )
"pluginsConf" : {},
},
# somebody ,
"somebody" : {
# , ,
},
#
" " : {
"qq" : "",
"pluginPath" : "",
"plugins" : [
'qqbot.plugins.sampleslots',
'qqbot.plugins.schedrestart',
],
"pluginsConf" : {
'qqbot.plugins.schedrestart': '8:00',
}
},
# # : , ( )
# " " : {
# "termServerPort" : 8188,
# "httpServerIP" : "",
# "httpServerPort" : 8189,
# "qq" : "",
# "mailAccount" : "",
# "mailAuthCode" : "",
# "cmdQrcode" : False,
# "debug" : False,
# "restartOnOffline" : False,
# "daemon" : False,
# "startAfterFetch" : False,
# "pluginPath" : "",
# "plugins" : [],
# "pluginsConf" : {}
# },
}
5.사용자 정의 기능
from qqbot import _bot as bot
# qq, fantasy
bot.Login(['-u','fantasy'])
# , qqbot
#
def getBuddyByName(nickname):
return bot.List('buddy',nickname)
#
def getGroupByName(groupname):
return bot.List('group',groupname)
# ( ) nickname content
def sendToNickname(nickname,content):
user = getBuddyByName(nickname)
if user:
bot.SendTo(user[0],content)
else:
print(" :"+nickname)
6.입구 메 인 프로그램
#coding: utf-8
import time
import sched
import datetime
from Dao.DutyscheduleDao import *
from Utils.QQInterface import *
#sched python
schedule = sched.scheduler(time.time, time.sleep)
#
newschedule = findScheduleByNewTime()
#
def getSeconds():
#
global newschedule
newschedule = findScheduleByNewTime()
if newschedule:
return (newschedule['worktime'] - datetime.datetime.now()).total_seconds()
else:
print(" , ……")
exit()
#
def SendTo():
global newschedule
sendToNickname(newschedule['name'],newschedule['content'])
# ,
def perform():
SendTo()
# 5 ,
time.sleep(5)
sleepSecond = getSeconds()
print(" :"+str(newschedule['worktime']))
#
schedule.enter(sleepSecond,1,perform,())
def run():
#1.
#2. ( : )
sleepSecond = getSeconds()
print(" :"+str(newschedule['worktime']))
#3.
schedule.enter(sleepSecond,1,perform,())
#4.
schedule.run()
if __name__ == '__main__':
run()
7.기타데이터베이스 구조:
drop database if exists info_db;
create database info_db default character set utf8;
use info_db;
create table dutyschedule_tb(
id int(11) auto_increment primary key,
worktime timestamp not null,
name varchar(10) not null,
content varchar(100) not null
)engine=InnoDB auto_increment=1 default charset=utf8;
이상 은 qq 메 시 지 를 순환 적 으로 보 내 는 코드 입 니 다.다음은 프로젝트 디 렉 터 리 구조 입 니 다.그 중 일부 나타 나 지 않 은 파일 은 자체 테스트 에 사용 되 므 로 관심 을 가지 지 않 아 도 됩 니 다.효과 그림:
요약:기본 기능 이 완성 되 었 지만 조작 이 우호 적 이지 않 아서 수 동 으로 데이터 베 이 스 를 입력 해 야 합 니 다.그 다음 에 데이터 관리의 전단 을 결합 하여 사용 하면 많은 조작 을 간소화 할 수 있 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.