浏览代码

feat: broadcast all types of messages (#255)

SI_NN_ER_LS 2 年之前
父节点
当前提交
a305d412d5
共有 2 个文件被更改,包括 15 次插入 和 40 次删除
  1. 5 17
      wbb/modules/feds.py
  2. 10 23
      wbb/modules/sudoers.py

+ 5 - 17
wbb/modules/feds.py

@@ -950,30 +950,18 @@ async def fbroadcast_message(client, message):
         )
     sleep_time = 0.1
 
-    if reply_message.text:
-        text = reply_message.text.markdown
-    else:
-        return await message.reply_text(
-            "You can only Broadcast text messages."
-        )
-
-    reply_markup = None
-    if reply_message.reply_markup:
-        reply_markup = InlineKeyboardMarkup(
-            reply_message.reply_markup.inline_keyboard
-        )
     sent = 0
     chats, _ = await chat_id_and_names_in_fed(fed_id)
     m = await message.reply_text(
         f"Broadcast in progress, will take {len(chats) * sleep_time} seconds."
     )
+    to_copy = not reply_message.poll
     for i in chats:
         try:
-            await app.send_message(
-                i,
-                text=text,
-                reply_markup=reply_markup,
-            )
+            if to_copy:
+                await reply_message.copy(i)
+            else:
+                await reply_message.forward(i)
             sent += 1
             await asyncio.sleep(sleep_time)
         except FloodWait as e:

+ 10 - 23
wbb/modules/sudoers.py

@@ -193,27 +193,21 @@ async def unban_globally(_, message):
 @capture_err
 async def broadcast_message(_, message):
     sleep_time = 0.1
-    text = message.reply_to_message.text.markdown
     reply_message = message.reply_to_message
 
-    reply_markup = None
-    if reply_message.reply_markup:
-        reply_markup = InlineKeyboardMarkup(
-            reply_message.reply_markup.inline_keyboard
-        )
     sent = 0
     schats = await get_served_chats()
     chats = [int(chat["chat_id"]) for chat in schats]
     m = await message.reply_text(
         f"Broadcast in progress, will take {len(chats) * sleep_time} seconds."
     )
+    to_copy = not reply_message.poll
     for i in chats:
         try:
-            await app.send_message(
-                i,
-                text=text,
-                reply_markup=reply_markup,
-            )
+            if to_copy:
+                await reply_message.copy(i)
+            else:
+                await reply_message.forward(i)
             sent += 1
             await asyncio.sleep(sleep_time)
         except FloodWait as e:
@@ -256,26 +250,19 @@ async def broadcast_message(_, message):
     sent = 0
     schats = await get_served_users()
     chats = [int(chat["user_id"]) for chat in schats]
-    text = message.reply_to_message.text.markdown
     reply_message = message.reply_to_message
 
-    reply_markup = None
-    if reply_message.reply_markup:
-        reply_markup = InlineKeyboardMarkup(
-            reply_message.reply_markup.inline_keyboard
-        )
-
     m = await message.reply_text(
         f"Broadcast in progress, will take {len(chats) * sleep_time} seconds."
     )
 
+    to_copy = not reply_message.poll
     for i in chats:
         try:
-            await app.send_message(
-                i,
-                text=text,
-                reply_markup=reply_markup,
-            )
+            if to_copy:
+                await reply_message.copy(i)
+            else:
+                await reply_message.forward(i)
             sent += 1
             await asyncio.sleep(sleep_time)
         except FloodWait as e: