Skip to content

Commit

Permalink
定时系统发送文本
Browse files Browse the repository at this point in the history
  • Loading branch information
Charles-Hello committed Nov 18, 2023
1 parent cf57854 commit 1f36be9
Show file tree
Hide file tree
Showing 11 changed files with 687 additions and 5 deletions.
8 changes: 4 additions & 4 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ tgusername="session_name1"
# 存储Tgusername的凭证,方便以后迁移
tg_api_id=4626139
tg_api_hash="1c204c080c97e5a796dff9402a700aa9"
tg_proxy=True
tg_proxy=true
tg_proxy_mode='socks5'
tg_proxy_host='192.168.1.36'
tg_proxy_port=9050
tg_proxy_host='127.0.0.1'
tg_proxy_port=7890
tg_proxy_user=''
tg_proxy_pass=''
tg_qrlogin=false
tg_qrlogin=true
tg_qrlogin_qrWeb_port=18535
tg_qq_email_status = True
tg_qrlogin_qqemail='1140601003@qq.com'
Expand Down
1 change: 1 addition & 0 deletions asp_work/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[]
2 changes: 2 additions & 0 deletions tgbot_client/consts.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
PREFIX = "tg"
"""拓展前缀"""

ASP_WORK = "asp_work"
"""保存定时任务"""
FILE_CACHE = "file_cache"
"""保存文件缓存目录,为了防止意外,不要和其他目录放在一起"""
LOG_PATH = "log"
Expand Down
5 changes: 4 additions & 1 deletion tgbot_client/file_manager/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from httpx import URL, AsyncClient
import os
from tgbot_client.consts import DOWNLOAD_TIMEOUT, FILE_CACHE
from tgbot_client.consts import DOWNLOAD_TIMEOUT, FILE_CACHE,ASP_WORK
from tgbot_client.utils import logger_wrapper, run_sync

from .model import FileCache
Expand All @@ -23,8 +23,11 @@ class FileManager:
"""文件缓存地址"""

def __init__(self) -> None:
self.file_path1 = Path(f"./{ASP_WORK}")
self.file_path1.mkdir(parents=True, exist_ok=True)
self.file_path = Path(f"./{FILE_CACHE}/temp")
self.file_path.mkdir(parents=True, exist_ok=True)


async def clear_directory(self, directory_path):
try:
Expand Down
4 changes: 4 additions & 0 deletions tgbot_client/startup.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,17 @@
from tgbot_client import get_driver, get_Tgchat
from tgbot_client.action_manager import router
from tgbot_client.tg_hookapi import tgrouter
from tgbot_client.user_plugins import *
from tgbot_client.config import Config, WebsocketType
from tgbot_client.driver import URL, HTTPServerSetup, WebSocketServerSetup
from tgbot_client.file_manager import database_close, database_init
from tgbot_client.log import logger
from tgbot_client.onebot12 import HeartbeatMetaEvent
from tgbot_client.scheduler import scheduler, scheduler_init, scheduler_shutdown

#定时任务的初始化设置
init_scheduled_tasks()

driver = get_driver()
tgchat = get_Tgchat()
pump_event_task: asyncio.Task = None
Expand Down
5 changes: 5 additions & 0 deletions tgbot_client/user_plugins/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
"""
TG_USER_PLUGINS
"""
from .apscheduler_send import *
from .aspscheduler_init import init_scheduled_tasks as init_scheduled_tasks
5 changes: 5 additions & 0 deletions tgbot_client/user_plugins/apscheduler_config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#这里放全部指令的名字+功能


content=f"""💖新增定时:^定时.*@.*\nCron例子👇\n`定时我是发送文本@*/20 * * * *`Cron例子👇\n`定时我是发送文本@2秒`\n\n🧦修改定时:^修改定时(.*)@.*#.*\n例子👇\n`修改定时123456@我不是发送#*/40 * * * *`\n\n❌删除定时:^删除定时(.*)\n例子👇\n`删除定时123456`\n\n❗️删除全部定时:^删除全部定时$\n例子👇\n`删除全部定时`\n\n🍺查询定时:^查询定时$|^定时查询$\n例子👇\n`查询定时`|`定时查询`\n\n✨定时指令:^查询定时$\n例子👇\n`定时指令`\n\n😜恢复定时:^恢复定时(.*)@.*#.*\n例子👇\n`恢复定时123456`\n\n😜暂停定时:^暂停定时(.*)@.*#.*\n例子👇\n`暂停定时123456`\n\n
"""
184 changes: 184 additions & 0 deletions tgbot_client/user_plugins/apscheduler_send.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
from tgbot_client.action_manager.bot_core import bot
from telethon import events, TelegramClient, functions
import asyncio
from apscheduler.triggers.cron import CronTrigger
from telethon.tl.types import ChannelForbidden
import re
from .apscheduler_config import content as apscheduler_config
from .json_data import add_task, list_tasks, delete_task, modify_task,delete_all_tasks
from .aspscheduler_init import Scheduler_data,init_scheduled_tasks

@bot.client.on(events.NewMessage(pattern=r"^id$", outgoing=True))
@bot.client.on(events.MessageEdited(pattern=r"^id$", outgoing=True))
async def id(event):
"""
查询您回复的消息的发件人的 UserID且设置定时发送文本
"""
message = await event.get_reply_message()
text = "Message ID: `" + str(event.message.id) + "`\n\n"
text += "**Chat**\nChat_id:" + str(event.chat_id) + "\n"
msg_from = event.chat if event.chat else (await event.get_chat())
if event.is_private:
try:
text += "first_name: `" + msg_from.first_name + "`\n"
except TypeError:
text += "**死号**\n"
if msg_from.last_name:
text += "last_name: `" + msg_from.last_name + "`\n"
if msg_from.username:
text += "username: @" + msg_from.username + "\n"
if msg_from.lang_code:
text += "lang_code: `" + msg_from.lang_code + "`\n"
if event.is_group or event.is_channel:
text += "title: `" + msg_from.title + "`\n" # 需要
try:
if msg_from.username:
text += "username: @" + msg_from.username + "\n"
except AttributeError:
await event.edit("出错了呜呜呜 ~ 当前聊天似乎不是群聊。")
return
text += "date: `" + str(msg_from.date) + "`\n"
if message:
text += (
"\n"
+ "以下是被回复消息的信息"
+ "\nMessage ID: `"
+ str(message.id)
+ "`\n\n**User**\nid: `"
+ str(message.sender_id)
+ "`"
)
try:
if message.sender.bot:
text += f"\nis_bot: 是"
try:
text += "\nfirst_name: `" + message.sender.first_name + "`"
except TypeError:
text += f"\n**死号**"
if message.sender.last_name:
text += "\nlast_name: `" + message.sender.last_name + "`"
if message.sender.username:
text += "\nusername: @" + message.sender.username
if message.sender.lang_code:
text += "\nlang_code: `" + message.sender.lang_code + "`"
except AttributeError:
pass
if message.forward:
if str(message.forward.chat_id).startswith("-100"):
text += (
"\n\n**Forward From Channel**\nid: `"
+ str(message.forward.chat_id)
+ "`\ntitle: `"
+ message.forward.chat.title
+ "`"
)
if not isinstance(message.forward.chat, ChannelForbidden):
if message.forward.chat.username:
text += "\nusername: @" + message.forward.chat.username
text += "\nmessage_id: `" + str(message.forward.channel_post) + "`"
if message.forward.post_author:
text += "\npost_author: `" + message.forward.post_author + "`"
text += "\ndate: `" + str(message.forward.date) + "`"
else:
if message.forward.sender:
text += (
"\n\n**Forward From User**\nid: `"
+ str(message.forward.sender_id)
+ "`"
)
try:
if message.forward.sender.bot:
text += f"\nis_bot: 是"
try:
text += (
"\nfirst_name: `"
+ message.forward.sender.first_name
+ "`"
)
except TypeError:
text += f"\n**死号**"
if message.forward.sender.last_name:
text += (
"\nlast_name: `"
+ message.forward.sender.last_name
+ "`"
)
if message.forward.sender.username:
text += "\nusername: @" + message.forward.sender.username
if message.forward.sender.lang_code:
text += (
"\nlang_code: `"
+ message.forward.sender.lang_code
+ "`"
)
except AttributeError:
pass
text += "\ndate: `" + str(message.forward.date) + "`"
msg = await event.edit(text)

#---------------------------我是业务代码分割线------------------------

@bot.client.on(events.NewMessage(from_users=bot.client._self_id, pattern=r"^u$|^U$"))
async def user(event):
msg = await event.respond("我叫喵酱~💕")
await asyncio.sleep(2)
await msg.delete()












@bot.client.on(events.NewMessage(pattern=r"^查询定时$|^定时查询$", outgoing=True))
async def check(event):
content = list_tasks()

await event.edit(content)


@bot.client.on(events.NewMessage(pattern=r"^删除定时(.*)", outgoing=True))
async def delete(event):
Apsmessages = event.raw_text

delete_number = re.findall(r"删除定时(.*)", Apsmessages)[0]
deleted_task_info = delete_task(delete_number)

await event.edit("🖤删除的定时任务状态\n" + deleted_task_info)
Scheduler_data.apscheduler_data.shutdown()
init_scheduled_tasks()

@bot.client.on(events.NewMessage(pattern=r"^删除全部定时$", outgoing=True))
async def delete(event):


delete_all_tasks()

await event.edit("❤️‍🩹已经为你删除全部定时任务!")
msg = await event.respond("你当前无定时任务!✏️\n请使用`定时(发送的文本)@(时间表达式)`进行新增!")
Scheduler_data.apscheduler_data.shutdown()
init_scheduled_tasks()



@bot.client.on(events.NewMessage(pattern=r"^修改定时(.*)@.*#.*", outgoing=True))
async def edit(event):
Apsmessages = event.raw_text
modify_Content = re.findall(r"@(.*)#", Apsmessages)[0]
modify_cron = re.findall(r"#(.*)", Apsmessages)[0]
delete_number = re.findall(r"修改定时(.*)@", Apsmessages)[0]
modify_Content = modify_task(task_id=delete_number,new_text=modify_Content, new_cron_expression=modify_cron)

await event.edit("😍修改的定时任务信息\n" + modify_Content)
Scheduler_data.apscheduler_data.shutdown()
init_scheduled_tasks()


@bot.client.on(events.NewMessage(pattern=r"^定时指令$", outgoing=True))
async def get(event):
msg = await event.respond(apscheduler_config)
Loading

0 comments on commit 1f36be9

Please sign in to comment.