mirror of
				https://github.com/civsocit/olgram.git
				synced 2025-10-30 23:53:24 +00:00 
			
		
		
		
	Compare commits
	
		
			No commits in common. "23055908991880f0b41fcd9b85e2559a48e8d459" and "59da56d46367e6854ae9d27a97c4878585f6de07" have entirely different histories.
		
	
	
		
			2305590899
			...
			59da56d463
		
	
		
|  | @ -140,11 +140,6 @@ async def mailing(bot: Bot, call: types.CallbackQuery): | |||
|     await bot.save(update_fields=["enable_mailing"]) | ||||
| 
 | ||||
| 
 | ||||
| async def tags(bot: Bot, call: types.CallbackQuery): | ||||
|     bot.enable_tags = not bot.enable_tags | ||||
|     await bot.save(update_fields=["enable_tags"]) | ||||
| 
 | ||||
| 
 | ||||
| async def go_mailing(bot: Bot, context: dict) -> int: | ||||
|     users = await bot.mailing_users | ||||
|     a_bot = AioBot(bot.decrypted_token()) | ||||
|  |  | |||
|  | @ -197,12 +197,6 @@ async def send_bot_settings_menu(bot: Bot, call: types.CallbackQuery): | |||
|                                                                    operation="thread_interrupt", | ||||
|                                                                    chat=empty)) | ||||
|     ) | ||||
|     keyboard.insert( | ||||
|         types.InlineKeyboardButton(text=_("Теги"), | ||||
|                                    callback_data=menu_callback.new(level=3, bot_id=bot.id, | ||||
|                                                                    operation="tags", | ||||
|                                                                    chat=empty)) | ||||
|     ) | ||||
|     is_promo = await bot.is_promo() | ||||
|     if is_promo: | ||||
|         keyboard.insert( | ||||
|  | @ -223,7 +217,6 @@ async def send_bot_settings_menu(bot: Bot, call: types.CallbackQuery): | |||
|     enable_always_second_message = _("включён") if bot.enable_always_second_message else _("выключен") | ||||
|     thread_interrupt = _("да") if bot.enable_thread_interrupt else _("нет") | ||||
|     mailing_turn = _("включена") if bot.enable_mailing else _("выключена") | ||||
|     tags_turn = _("включены") if bot.enable_tags else _("выключены") | ||||
|     text = dedent(_(""" | ||||
|     <a href="https://olgram.readthedocs.io/ru/latest/options.html#threads">Потоки сообщений</a>: <b>{0}</b> | ||||
|     <a href="https://olgram.readthedocs.io/ru/latest/options.html#user-info">Данные пользователя</a>: <b>{1}</b> | ||||
|  | @ -231,9 +224,8 @@ async def send_bot_settings_menu(bot: Bot, call: types.CallbackQuery): | |||
|     <a href="https://olgram.readthedocs.io/ru/latest/options.html#always_second_message">Автоответчик всегда</a>: <b>{3}</b> | ||||
|     <a href="https://olgram.readthedocs.io/ru/latest/options.html#thread_interrupt">Прерывать поток</a>: <b>{4}</b> | ||||
|     <a href="https://olgram.readthedocs.io/ru/latest/options.html#mailing">Рассылка</a>: <b>{5}</b> | ||||
|     Теги: <b>{6}</b> | ||||
|     """)).format(thread_turn, info_turn, antiflood_turn, enable_always_second_message, thread_interrupt, | ||||
|                  mailing_turn, tags_turn) | ||||
|                  mailing_turn) | ||||
| 
 | ||||
|     if is_promo: | ||||
|         olgram_turn = _("включена") if bot.enable_olgram_text else _("выключена") | ||||
|  | @ -680,9 +672,6 @@ async def callback(call: types.CallbackQuery, callback_data: dict, state: FSMCon | |||
|         if operation == "mailing": | ||||
|             await bot_actions.mailing(bot, call) | ||||
|             return await send_bot_settings_menu(bot, call) | ||||
|         if operation == "tags": | ||||
|             await bot_actions.tags(bot, call) | ||||
|             return await send_bot_settings_menu(bot, call) | ||||
|         if operation == "thread_interrupt": | ||||
|             await bot_actions.thread_interrupt(bot, call) | ||||
|             return await send_bot_settings_menu(bot, call) | ||||
|  |  | |||
|  | @ -1,4 +0,0 @@ | |||
| -- upgrade -- | ||||
| ALTER TABLE "bot" ADD "enable_tags" BOOL NOT NULL  DEFAULT False; | ||||
| -- downgrade -- | ||||
| ALTER TABLE "bot" DROP COLUMN "enable_tags"; | ||||
|  | @ -49,7 +49,6 @@ class Bot(Model): | |||
|     enable_always_second_message = fields.BooleanField(default=False) | ||||
|     enable_thread_interrupt = fields.BooleanField(default=True) | ||||
|     enable_mailing = fields.BooleanField(default=False) | ||||
|     enable_tags = fields.BooleanField(default=False) | ||||
|     last_mailing_at = fields.DatetimeField(null=True, default=None) | ||||
| 
 | ||||
|     def decrypted_token(self): | ||||
|  |  | |||
|  | @ -40,7 +40,7 @@ class OlgramSettings(AbstractSettings): | |||
| 
 | ||||
|     @classmethod | ||||
|     def version(cls): | ||||
|         return "0.7.3" | ||||
|         return "0.7.2" | ||||
| 
 | ||||
|     @classmethod | ||||
|     @lru_cache | ||||
|  |  | |||
|  | @ -81,7 +81,7 @@ def _on_security_policy(message: types.Message, bot): | |||
|                        parse_mode="HTML") | ||||
| 
 | ||||
| 
 | ||||
| async def send_user_message(message: types.Message, super_chat_id: int, bot, tag: str = ""): | ||||
| async def send_user_message(message: types.Message, super_chat_id: int, bot): | ||||
|     """Переслать сообщение от пользователя, добавлять к нему user info при необходимости""" | ||||
|     if bot.enable_additional_info: | ||||
|         user_info = _("Сообщение от пользователя ") | ||||
|  | @ -106,15 +106,6 @@ async def send_user_message(message: types.Message, super_chat_id: int, bot, tag | |||
|             new_message_2 = await message.copy_to(super_chat_id, reply_to_message_id=new_message.message_id) | ||||
|             await _redis.set(_message_unique_id(bot.pk, new_message_2.message_id), message.chat.id, | ||||
|                              pexpire=ServerSettings.redis_timeout_ms()) | ||||
|     elif tag: | ||||
|         # добавлять тег в конец текста | ||||
|         if message.content_type == types.ContentType.TEXT and len(message.text) + len(tag) < 4093: | ||||
|             new_message = await message.bot.send_message(super_chat_id, message.text + "\n\n" + tag) | ||||
|         else: | ||||
|             new_message = await message.bot.send_message(super_chat_id, text=tag) | ||||
|             new_message_2 = await message.copy_to(super_chat_id, reply_to_message_id=new_message.message_id) | ||||
|             await _redis.set(_message_unique_id(bot.pk, new_message_2.message_id), message.chat.id, | ||||
|                              pexpire=ServerSettings.redis_timeout_ms()) | ||||
|     else: | ||||
|         try: | ||||
|             new_message = await message.forward(super_chat_id) | ||||
|  | @ -128,13 +119,6 @@ async def send_user_message(message: types.Message, super_chat_id: int, bot, tag | |||
| 
 | ||||
| async def send_to_superchat(is_super_group: bool, message: types.Message, super_chat_id: int, bot): | ||||
|     """Пересылка сообщения от пользователя оператору (логика потоков сообщений)""" | ||||
|     if bot.enable_tags: | ||||
|         tag = await _redis.get(_tag_uid(bot.pk, message.chat.id), encoding="utf-8") | ||||
|     else: | ||||
|         tag = "" | ||||
|     if tag: | ||||
|         tag = str(tag) | ||||
| 
 | ||||
|     if is_super_group and bot.enable_threads: | ||||
|         if bot.enable_thread_interrupt: | ||||
|             thread_timeout = ServerSettings.thread_timeout_ms() | ||||
|  | @ -144,34 +128,20 @@ async def send_to_superchat(is_super_group: bool, message: types.Message, super_ | |||
|         if thread_first_message: | ||||
|             # переслать в супер-чат, отвечая на предыдущее сообщение | ||||
|             try: | ||||
|                 if tag: | ||||
|                     if message.content_type == types.ContentType.TEXT and len(message.text) + len(tag) < 4093: | ||||
|                         new_message = await message.bot.send_message( | ||||
|                             super_chat_id, | ||||
|                             message.text + "\n\n" + tag, | ||||
|                             reply_to_message_id=int(thread_first_message)) | ||||
|                     else: | ||||
|                         new_message = await message.copy_to(super_chat_id, | ||||
|                                                             reply_to_message_id=int(thread_first_message)) | ||||
|                         new_message_2 = await message.bot.send_message( | ||||
|                             super_chat_id, reply_to_message_id=new_message.message_id, text=tag) | ||||
|                         await _redis.set(_message_unique_id(bot.pk, new_message_2.message_id), message.chat.id, | ||||
|                                          pexpire=thread_timeout) | ||||
|                 else: | ||||
|                     new_message = await message.copy_to(super_chat_id, reply_to_message_id=int(thread_first_message)) | ||||
|                 new_message = await message.copy_to(super_chat_id, reply_to_message_id=int(thread_first_message)) | ||||
|                 await _redis.set(_message_unique_id(bot.pk, new_message.message_id), message.chat.id, | ||||
|                                  pexpire=thread_timeout) | ||||
|             except exceptions.BadRequest: | ||||
|                 new_message = await send_user_message(message, super_chat_id, bot, tag) | ||||
|                 new_message = await send_user_message(message, super_chat_id, bot) | ||||
|                 await _redis.set( | ||||
|                     _thread_unique_id(bot.pk, message.chat.id), new_message.message_id, pexpire=thread_timeout) | ||||
|         else: | ||||
|             # переслать супер-чат | ||||
|             new_message = await send_user_message(message, super_chat_id, bot, tag) | ||||
|             new_message = await send_user_message(message, super_chat_id, bot) | ||||
|             await _redis.set(_thread_unique_id(bot.pk, message.chat.id), new_message.message_id, | ||||
|                              pexpire=thread_timeout) | ||||
|     else:  # личные сообщения не поддерживают потоки сообщений: просто отправляем сообщение | ||||
|         await send_user_message(message, super_chat_id, bot, tag) | ||||
|         await send_user_message(message, super_chat_id, bot) | ||||
| 
 | ||||
| 
 | ||||
| async def _increase_count(_bot): | ||||
|  | @ -205,9 +175,6 @@ async def handle_user_message(message: types.Message, super_chat_id: int, bot): | |||
|         await send_to_superchat(is_super_group, message, super_chat_id, bot) | ||||
|     except (exceptions.Unauthorized, exceptions.ChatNotFound): | ||||
|         return SendMessage(chat_id=message.chat.id, text=_("Не удаётся связаться с владельцем бота")) | ||||
|     except exceptions.RetryAfter: | ||||
|         return SendMessage(chat_id=message.chat.id, text=_("Слишком много сообщений, подождите одну минуту"), | ||||
|                            reply_to_message_id=message.message_id) | ||||
|     except exceptions.TelegramAPIError as err: | ||||
|         _logger.error(f"(exception on forwarding) {err}") | ||||
|         return | ||||
|  | @ -256,15 +223,14 @@ async def handle_operator_message(message: types.Message, super_chat_id: int, bo | |||
|             else: | ||||
|                 await banned_user.delete() | ||||
|                 return SendMessage(chat_id=message.chat.id, text=_("Пользователь разбанен")) | ||||
|         if bot.enable_tags: | ||||
|             if message.text and message.text.startswith("/tag "): | ||||
|                 tag = message.text.replace("/tag ", "")[:20].strip() | ||||
|                 if tag: | ||||
|                     await _redis.set(_tag_uid(bot.pk, chat_id), tag, pexpire=ServerSettings.redis_timeout_ms()) | ||||
|                     return SendMessage(chat_id=message.chat.id, text=_("Тег выставлен")) | ||||
|                 else: | ||||
|                     await _redis.delete(_tag_uid(bot.pk, chat_id)) | ||||
|                     return SendMessage(chat_id=message.chat.id, text=_("Тег убран")) | ||||
|         if message.text and message.text.startswith("/tag "): | ||||
|             tag = message.text.replace("/tag ", "")[:20].strip() | ||||
|             if tag: | ||||
|                 await _redis.set(_tag_uid(bot.pk, chat_id), tag, pexpire=ServerSettings.redis_timeout_ms()) | ||||
|                 return SendMessage(chat_id=message.chat.id, text=_("Тег выставлен")) | ||||
|             else: | ||||
|                 await _redis.delete(_tag_uid(bot.pk, chat_id)) | ||||
|                 return SendMessage(chat_id=message.chat.id, text=_("Тег убран")) | ||||
| 
 | ||||
|         try: | ||||
|             await message.copy_to(chat_id) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user