mirror of
https://github.com/TeamPGM/PagerMaid_Plugins.git
synced 2024-11-22 05:09:15 +00:00
AutoReplySticker v1.10 添加群组白名单功能
This commit is contained in:
parent
63fa830fda
commit
49922bc864
@ -12,34 +12,39 @@ from os.path import exists
|
|||||||
from asyncio import sleep
|
from asyncio import sleep
|
||||||
from random import randint
|
from random import randint
|
||||||
import yaml
|
import yaml
|
||||||
|
from telethon.tl.custom.message import Message
|
||||||
from telethon.tl.functions.messages import GetAllStickersRequest
|
from telethon.tl.functions.messages import GetAllStickersRequest
|
||||||
from telethon.tl.functions.messages import GetStickerSetRequest
|
from telethon.tl.functions.messages import GetStickerSetRequest
|
||||||
from telethon.tl.types import InputStickerSetID
|
from telethon.tl.types import InputStickerSetID
|
||||||
from pagermaid import log
|
from pagermaid import log
|
||||||
from pagermaid.listener import listener
|
from pagermaid.listener import listener
|
||||||
|
|
||||||
async def ars_check(context):
|
async def ars_check(message: Message) -> None:
|
||||||
try:
|
try:
|
||||||
config = yaml.load(open(r"./plugins/autoreplysticker/config.yml"), Loader=yaml.FullLoader)
|
config = yaml.load(open(r"./plugins/autoreplysticker/config.yml"), Loader=yaml.FullLoader)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
await context.edit("自动回复贴纸的相关设置不存在。\n请使用 `-ars help` 查看设置方法")
|
await message.edit("自动回复贴纸的相关设置不存在。\n请使用 `-ars help` 查看设置方法")
|
||||||
return
|
return
|
||||||
_sticker_id = config['sticker_id']
|
_sticker_id = config['sticker_id']
|
||||||
_sticker_hash = config['sticker_hash']
|
_sticker_hash = config['sticker_hash']
|
||||||
_num = config['num']
|
_num = config['num']
|
||||||
_time = config['time']
|
_time = config['time']
|
||||||
_noti = await context.reply(
|
_white = config['whitelist']
|
||||||
|
_noti = await message.reply(
|
||||||
'您当前的设置为:\n'
|
'您当前的设置为:\n'
|
||||||
f'sticker_id: {_sticker_id}\n'
|
f'sticker_id: {_sticker_id}\n'
|
||||||
f'sticker_hash: {_sticker_hash}\n'
|
f'sticker_hash: {_sticker_hash}\n'
|
||||||
f'time: {_time}\n'
|
f'time: {_time}\n'
|
||||||
f'num: {_num}')
|
f'num: {_num}\n'
|
||||||
await context.delete()
|
f'白名单群组id: {_white}\n'
|
||||||
|
'\n'
|
||||||
|
'本消息15秒后自动删除')
|
||||||
|
await message.delete()
|
||||||
await sleep(15)
|
await sleep(15)
|
||||||
await _noti.delete()
|
await _noti.delete()
|
||||||
|
|
||||||
async def ars_getall(context):
|
async def ars_getall(message: Message) -> None:
|
||||||
sticker_sets = await context.client(GetAllStickersRequest(0))
|
sticker_sets = await message.client(GetAllStickersRequest(0))
|
||||||
sticker_pack_list = []
|
sticker_pack_list = []
|
||||||
for sticker_set in sticker_sets.sets:
|
for sticker_set in sticker_sets.sets:
|
||||||
if len(sticker_pack_list) < 10:
|
if len(sticker_pack_list) < 10:
|
||||||
@ -50,25 +55,51 @@ async def ars_getall(context):
|
|||||||
else:
|
else:
|
||||||
sticker_pack_list_old = sticker_pack_list
|
sticker_pack_list_old = sticker_pack_list
|
||||||
send_text = '\n\n'.join(sticker_pack_list_old)
|
send_text = '\n\n'.join(sticker_pack_list_old)
|
||||||
await context.client.send_message(context.chat_id, send_text)
|
await message.client.send_message(message.chat_id, send_text)
|
||||||
sticker_pack_list = []
|
sticker_pack_list = []
|
||||||
await sleep(2)
|
await sleep(2)
|
||||||
sendtext = '\n\n'.join(sticker_pack_list)
|
sendtext = '\n\n'.join(sticker_pack_list)
|
||||||
await context.client.send_message(context.chat_id, sendtext)
|
await message.client.send_message(message.chat_id, sendtext)
|
||||||
await context.delete()
|
await message.delete()
|
||||||
|
|
||||||
async def ars_help(context):
|
async def ars_help(message: Message) -> None:
|
||||||
await context.reply(
|
await message.reply(
|
||||||
'欢迎使用自动回复贴纸\n'
|
'欢迎使用自动回复贴纸\n'
|
||||||
'设置方法为\n'
|
'设置方法为\n'
|
||||||
'先使用 `-ars getall` 获取贴纸包的id和hash\n'
|
'先使用 `-ars getall` 获取贴纸包的id和hash\n'
|
||||||
'之后使用 `-ars set` 贴纸包id 贴纸包hash 自动删除时间 第i张贴纸 第j张贴纸 ...\n'
|
'之后使用 `-ars set` 贴纸包id 贴纸包hash 自动删除时间 第i张贴纸 第j张贴纸 ...\n'
|
||||||
'比如 `-ars set 000 001 10 0 1 2 3` 的意义为\n'
|
'比如 `-ars set 000 001 10 0 1 2 3` 的意义为\n'
|
||||||
'设置贴纸包id为000, hash为001, 自动回复10秒后删除, 随机从第0, 1, 2, 3张贴纸中选择一张自动回复\n\n'
|
'设置贴纸包id为000, hash为001, 自动回复10秒后删除, 随机从第0, 1, 2, 3张贴纸中选择一张自动回复\n\n'
|
||||||
|
'如果您想要在某个群内设置自动回复白名单,请在该群中回复`-ars w`'
|
||||||
'如有使用问题,请前往 [这里](https://t.me/PagerMaid_Modify) 请求帮助')
|
'如有使用问题,请前往 [这里](https://t.me/PagerMaid_Modify) 请求帮助')
|
||||||
await context.delete()
|
await message.delete()
|
||||||
|
|
||||||
def set_state(name, state):
|
async def ars_whitelist(message: Message) -> None:
|
||||||
|
chat_id = str(message.chat_id)
|
||||||
|
try:
|
||||||
|
config = yaml.load(open(r"./plugins/autoreplysticker/config.yml"), Loader=yaml.FullLoader)
|
||||||
|
except FileNotFoundError:
|
||||||
|
await message.edit("自动回复贴纸的相关设置不存在。\n请使用 `-ars help` 查看设置方法")
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
_white = config['whitelist']
|
||||||
|
except:
|
||||||
|
white_list = ['0']
|
||||||
|
set_state('whitelist', white_list)
|
||||||
|
_white = config['whitelist']
|
||||||
|
|
||||||
|
_white.append(chat_id)
|
||||||
|
try:
|
||||||
|
_white.remove('0')
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
_white = list(set(_white))
|
||||||
|
set_state('whitelist', _white)
|
||||||
|
_noti = await message.edit('OK')
|
||||||
|
await sleep(5)
|
||||||
|
await _noti.delete()
|
||||||
|
|
||||||
|
def set_state(name: str, state: list) -> None:
|
||||||
file_name = "./plugins/autoreplysticker/config.yml"
|
file_name = "./plugins/autoreplysticker/config.yml"
|
||||||
if exists(file_name):
|
if exists(file_name):
|
||||||
with open(file_name) as f:
|
with open(file_name) as f:
|
||||||
@ -81,7 +112,7 @@ def set_state(name, state):
|
|||||||
with open(file_name, 'w', encoding='utf-8') as f:
|
with open(file_name, 'w', encoding='utf-8') as f:
|
||||||
yaml.dump(dc, f)
|
yaml.dump(dc, f)
|
||||||
|
|
||||||
def get_name(sender):
|
def get_name(sender: Message.sender) -> str:
|
||||||
"""
|
"""
|
||||||
get_name(Message.sender)
|
get_name(Message.sender)
|
||||||
"""
|
"""
|
||||||
@ -98,7 +129,7 @@ def get_name(sender):
|
|||||||
name = f'@{username}'
|
name = f'@{username}'
|
||||||
return name
|
return name
|
||||||
|
|
||||||
def process_link(chatid, msgid):
|
def process_link(chatid: int, msgid: int) -> str:
|
||||||
"""
|
"""
|
||||||
process_link(chat_id, message_id)
|
process_link(chat_id, message_id)
|
||||||
return https://t.me/c/chat_id/message_id
|
return https://t.me/c/chat_id/message_id
|
||||||
@ -116,6 +147,9 @@ def process_link(chatid, msgid):
|
|||||||
async def ars(context):
|
async def ars(context):
|
||||||
if not exists('./plugins/autoreplysticker'):
|
if not exists('./plugins/autoreplysticker'):
|
||||||
mkdir('./plugins/autoreplysticker')
|
mkdir('./plugins/autoreplysticker')
|
||||||
|
|
||||||
|
if len(context.parameter) == 0:
|
||||||
|
await ars_help(context)
|
||||||
|
|
||||||
if context.parameter[0] == 'set':
|
if context.parameter[0] == 'set':
|
||||||
if len(context.parameter) < 5:
|
if len(context.parameter) < 5:
|
||||||
@ -130,6 +164,8 @@ async def ars(context):
|
|||||||
for i in range(4, len(context.parameter)):
|
for i in range(4, len(context.parameter)):
|
||||||
num_list.append(context.parameter[i])
|
num_list.append(context.parameter[i])
|
||||||
set_state('num', num_list)
|
set_state('num', num_list)
|
||||||
|
white_list = ['0']
|
||||||
|
set_state('whitelist', white_list)
|
||||||
except:
|
except:
|
||||||
await context.reply('设置失败,请手动设置`./plugins/autoreplysticker/config.yml`')
|
await context.reply('设置失败,请手动设置`./plugins/autoreplysticker/config.yml`')
|
||||||
return
|
return
|
||||||
@ -144,6 +180,8 @@ async def ars(context):
|
|||||||
await ars_getall(context)
|
await ars_getall(context)
|
||||||
elif context.parameter[0] == 'help':
|
elif context.parameter[0] == 'help':
|
||||||
await ars_help(context)
|
await ars_help(context)
|
||||||
|
elif context.parameter[0] == 'w':
|
||||||
|
await ars_whitelist(context)
|
||||||
|
|
||||||
@listener(incoming=True, ignore_edited=True)
|
@listener(incoming=True, ignore_edited=True)
|
||||||
async def process_message(context):
|
async def process_message(context):
|
||||||
@ -164,9 +202,13 @@ async def process_message(context):
|
|||||||
_sticker_hash = int(config['sticker_hash'])
|
_sticker_hash = int(config['sticker_hash'])
|
||||||
_num = config['num']
|
_num = config['num']
|
||||||
_time = int(config['time'])
|
_time = int(config['time'])
|
||||||
|
_whitelist = config['whitelist']
|
||||||
except:
|
except:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if str(context.chat_id) in _whitelist:
|
||||||
|
return
|
||||||
|
|
||||||
if (reply and reply_user_id == me.id):
|
if (reply and reply_user_id == me.id):
|
||||||
stickers = await context.client(
|
stickers = await context.client(
|
||||||
GetStickerSetRequest(
|
GetStickerSetRequest(
|
||||||
|
Loading…
Reference in New Issue
Block a user