mirror of
https://gitlab.com/octospacc/WinDog.git
synced 2025-06-05 22:09:20 +02:00
Add broadcast command
This commit is contained in:
@ -12,6 +12,8 @@ TelegramAdmins = [ 123456789, ]
|
|||||||
TelegramWhitelist = [ 123456789, ]
|
TelegramWhitelist = [ 123456789, ]
|
||||||
TelegramRestrict = False
|
TelegramRestrict = False
|
||||||
|
|
||||||
|
AdminIds = [ "123456789@telegram", "admin@activitypub@mastodon.example.com", ]
|
||||||
|
|
||||||
DefaultLang = 'en'
|
DefaultLang = 'en'
|
||||||
Debug = False
|
Debug = False
|
||||||
Dumper = False
|
Dumper = False
|
||||||
@ -27,6 +29,7 @@ Endpoints = {
|
|||||||
"source": cSource,
|
"source": cSource,
|
||||||
"ping": cPing,
|
"ping": cPing,
|
||||||
"echo": cEcho,
|
"echo": cEcho,
|
||||||
|
"broadcast": cBroadcast,
|
||||||
#"repeat": cRepeat,
|
#"repeat": cRepeat,
|
||||||
"wish": percenter,
|
"wish": percenter,
|
||||||
"level": percenter,
|
"level": percenter,
|
||||||
|
@ -87,6 +87,17 @@ def cEcho(Context, Data=None) -> None:
|
|||||||
else:
|
else:
|
||||||
SendMsg(Context, {"Text": choice(Locale.__('echo.empty'))})
|
SendMsg(Context, {"Text": choice(Locale.__('echo.empty'))})
|
||||||
|
|
||||||
|
# Module: Broadcast
|
||||||
|
# Sends an admin message over to another destination
|
||||||
|
def cBroadcast(Context, Data=None) -> None:
|
||||||
|
if len(Data.Tokens) >= 3 and Data.User['Id'] in AdminIds:
|
||||||
|
Dest = Data.Tokens[1]
|
||||||
|
Text = ' '.join(Data.Tokens[2:])
|
||||||
|
SendMsg(Context, {"TextPlain": Text}, Dest)
|
||||||
|
SendMsg(Context, {"TextPlain": "Executed."})
|
||||||
|
else:
|
||||||
|
SendMsg(Context, {"Text": choice(Locale.__('eval'))})
|
||||||
|
|
||||||
#def cTime(update:Update, context:CallbackContext) -> None:
|
#def cTime(update:Update, context:CallbackContext) -> None:
|
||||||
# update.message.reply_markdown_v2(
|
# update.message.reply_markdown_v2(
|
||||||
# CharEscape(choice(Locale.__('time')).format(time.ctime().replace(' ', ' ')), 'MARKDOWN_SPEECH'),
|
# CharEscape(choice(Locale.__('time')).format(time.ctime().replace(' ', ' ')), 'MARKDOWN_SPEECH'),
|
||||||
|
24
WinDog.py
24
WinDog.py
@ -124,7 +124,7 @@ def CmdAllowed(update) -> bool:
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def HandleCmd(update):
|
def HandleCmd(update):
|
||||||
filters(update)
|
TelegramQueryHandle(update)
|
||||||
if CmdAllowed(update):
|
if CmdAllowed(update):
|
||||||
return ParseCmd(update.message.text)
|
return ParseCmd(update.message.text)
|
||||||
else:
|
else:
|
||||||
@ -135,18 +135,23 @@ def GetRawTokens(Text:str) -> list:
|
|||||||
|
|
||||||
def ParseCmd(Msg) -> dict:
|
def ParseCmd(Msg) -> dict:
|
||||||
Name = Msg.lower().split(' ')[0][1:].split('@')[0]
|
Name = Msg.lower().split(' ')[0][1:].split('@')[0]
|
||||||
|
if Name:
|
||||||
return SimpleNamespace(**{
|
return SimpleNamespace(**{
|
||||||
"Name": Name,
|
"Name": Name,
|
||||||
"Body": Name.join(Msg.split(Name)[1:]).strip(),
|
"Body": Name.join(Msg.split(Name)[1:]).strip(),
|
||||||
"Tokens": GetRawTokens(Msg),
|
"Tokens": GetRawTokens(Msg),
|
||||||
"User": {"Name": "", "Tag": "", "Id": ""},
|
"User": {},
|
||||||
"Tagged": {},
|
"Tagged": {},
|
||||||
})
|
})
|
||||||
|
|
||||||
def filters(update:Update, context:CallbackContext=None) -> None:
|
def TelegramQueryHandle(update:Update, context:CallbackContext=None) -> None:
|
||||||
|
if update and update.message:
|
||||||
Cmd = ParseCmd(update.message.text)
|
Cmd = ParseCmd(update.message.text)
|
||||||
if Cmd.Tokens[0][0] in CmdPrefixes and Cmd.Name in Endpoints:
|
if Cmd and Cmd.Tokens[0][0] in CmdPrefixes and Cmd.Name in Endpoints:
|
||||||
Endpoints[Cmd.Name](update, Cmd)
|
Cmd.User['Name'] = 'null'
|
||||||
|
Cmd.User['Tag'] = 'null'
|
||||||
|
Cmd.User['Id'] = f'{update.message.from_user.id}@telegram'
|
||||||
|
Endpoints[Cmd.Name]({ "Event": update, "Manager": context }, Cmd)
|
||||||
if Debug and Dumper:
|
if Debug and Dumper:
|
||||||
Text = update.message.text
|
Text = update.message.text
|
||||||
Text = (Text.replace('\n', '\\n') if Text else '')
|
Text = (Text.replace('\n', '\\n') if Text else '')
|
||||||
@ -200,7 +205,7 @@ def RandHexStr(Len:int) -> str:
|
|||||||
def HttpGet(Url:str):
|
def HttpGet(Url:str):
|
||||||
return urlopen(Request(Url, headers={"User-Agent": WebUserAgent}))
|
return urlopen(Request(Url, headers={"User-Agent": WebUserAgent}))
|
||||||
|
|
||||||
def SendMsg(Context, Data):
|
def SendMsg(Context, Data, Destination=None) -> None:
|
||||||
#Data: Text, Media, Files
|
#Data: Text, Media, Files
|
||||||
if type(Context) == dict:
|
if type(Context) == dict:
|
||||||
Event = Context['Event'] if 'Event' in Context else None
|
Event = Context['Event'] if 'Event' in Context else None
|
||||||
@ -230,7 +235,10 @@ def SendMsg(Context, Data):
|
|||||||
in_reply_to_id=Event['status']['id'],
|
in_reply_to_id=Event['status']['id'],
|
||||||
visibility=('direct' if Event['status']['visibility'] == 'direct' else 'unlisted'),
|
visibility=('direct' if Event['status']['visibility'] == 'direct' else 'unlisted'),
|
||||||
)
|
)
|
||||||
elif isinstance(Manager, telegram.Update):
|
elif isinstance(Event, telegram.Update):
|
||||||
|
if Destination:
|
||||||
|
Manager.bot.send_message(Destination, text=TextPlain)
|
||||||
|
else:
|
||||||
if InDict(Data, 'Media'):
|
if InDict(Data, 'Media'):
|
||||||
Event.message.reply_photo(
|
Event.message.reply_photo(
|
||||||
Data['Media'],
|
Data['Media'],
|
||||||
@ -260,7 +268,7 @@ def Main() -> None:
|
|||||||
dispatcher.add_handler(CommandHandler(Cmd, multifun))
|
dispatcher.add_handler(CommandHandler(Cmd, multifun))
|
||||||
|
|
||||||
#dispatcher.add_handler(CommandHandler('setfilter', setfilter))
|
#dispatcher.add_handler(CommandHandler('setfilter', setfilter))
|
||||||
dispatcher.add_handler(MessageHandler(Filters.text | Filters.command, filters))
|
dispatcher.add_handler(MessageHandler(Filters.text | Filters.command, TelegramQueryHandle))
|
||||||
|
|
||||||
print('Starting WinDog...')
|
print('Starting WinDog...')
|
||||||
updater.start_polling()
|
updater.start_polling()
|
||||||
|
Reference in New Issue
Block a user