def gene(self): """ 返回Content迭代器,如果为空则返回None """ text = self.f.read() temp = "" for c in text: # 注意:用python的r模式读文件时根据系统的区别会用\n代替\n\r if c == "\n": temp += c # 将有效内容拿出 t = "" if config.env == config.System.WIN: if temp[-1:] == tool.newline(): t = temp[:-1] else: continue elif config.env == config.System.LINUX: if temp[-1:] == tool.newline(): t = temp[:-1] else: continue else: pass # todo:报错,出现了不一样的换行符 t = t.strip() # 去除首尾空格 signals = filter.FILTERS.filt(t) ty, num, name = detector.DETECTORS.detect(t) if ty == detector.TYPE.CHAPTER and \ filter.SIGNAL.REJECT_CHAP not in signals and \ filter.SIGNAL.REJECT_ALL not in signals and \ filter.SIGNAL.REJECT_CV not in signals: # 章 yield contents.Chapter(int(num), name) elif ty == detector.TYPE.VOLUME and \ filter.SIGNAL.REJECT_VOL not in signals and \ filter.SIGNAL.REJECT_ALL not in signals and \ filter.SIGNAL.REJECT_CV not in signals: # 卷 yield contents.Volume(int(num), name) elif ty == detector.TYPE.ENTER: # 空行 yield contents.Enter() elif ty == detector.TYPE.TEXT: # 段 yield contents.Text(name) else: yield contents.Text(name) temp = "" continue else: temp += c yield None
def get_message(self): if (self._type == 'message'): message = contents.Text(self._username, self._chat_id, self._message_id, self._message) # message.update(self._body) if (self._type == 'photo'): message = contents.Photo(self._username, self._chat_id, self._message_id, self._file_id, self._message) if (self._type == 'document'): message = contents.Document(self._username, self._chat_id, self._message_id, self._file_id, self._message) # FEXME Замена сгенерированого id сообщения на старый id сообщения message.set_id(self._id) message.update(self._body) if (self._recipients_chat_id): for chat_and_message_id in self._recipients_chat_id: chat_id, message_id = chat_and_message_id message.add_recipient_chat_and_message_id(chat_id, message_id) # Накрутка ответов :D message.set_amount_responses(self._responses) return message
def enter_text(message: telebot.types.Message, message_wrapper: contents.Message): if (message.text == '[ ⚠️ Отмена ⚠️ ]'): if (Handler._session.is_user_moderator_by_chat_id( message.chat.id)): bot.send_message(message.chat.id, '⚠️ Ответ отменен ⚠️', reply_markup=Handler._moder_panel.menu()) # elif (Handler._session.is_user_administrator_by_chat_id( message.chat.id)): bot.send_message(message.chat.id, '⚠️ Ответ отменен ⚠️', reply_markup=Handler._admin_panel.menu()) else: bot.send_message(message.chat.id, '⚠ Упс. что-то пошло не так', reply_markup=panels.clearn_menu()) else: message_wrapper, admin_panel = Handler.make_body( message, message_wrapper) # Получение ника отвечающего nickname = Handler._session.get_user_nickname_by_chat_id( message.chat.id) # if (message.text): answer = contents.Text(nickname, message.chat.id, message.message_id, message.text).get() if (message.photo): answer = contents.Photo(nickname, message.chat.id, message.message_id, message.photo[-1].file_id, message.caption).get() if (message.document): answer = contents.Document(nickname, message.chat.id, message.message_id, message.document.file_id, message.caption).get() # Обновление сообщения Handler._chat.update_message(message_wrapper) # Сохранение ответа в базе данных Handler._chat.append_message(answer) # Запись в таблицу answers уникального айди сообщения, айди модератора и пользователя # Можно использовать для анализа ответов модераторов Handler._chat.bind_answer(message.chat.id, message_wrapper.chat_id, answer.id) # Отправка ответа пользователю if (message.text): bot.send_message( message_wrapper.chat_id, 'От: <b>%s</b>\n\n%s' % (nickname, message.text), reply_to_message_id=message_wrapper.message_id, parse_mode='HTML') if (message.photo): caption = '\n\n' + message.caption if ( message.caption) else '' bot.send_photo(message_wrapper.chat_id, message.photo[-1].file_id, caption='От: <b>%s</b>%s' % (nickname, caption), parse_mode='HTML') if (message.document): caption = '\n\n' + message.caption if ( message.caption) else '' bot.send_document(message_wrapper.chat_id, message.document.file_id, caption='От: <b>%s</b>%s' % (nickname, caption), parse_mode='HTML') # Сообщение изменяется только в тех, кто его получил for recipient in message_wrapper.get_recipients().items(): chat_id, message_id = recipient if (message_wrapper.message): bot.edit_message_text(chat_id=chat_id, message_id=message_id, text=message_wrapper.body, parse_mode='HTML', reply_markup=admin_panel) else: bot.edit_message_caption(chat_id=chat_id, message_id=message_id, caption=message_wrapper.body, parse_mode='HTML', reply_markup=admin_panel) if (Handler._session.is_user_moderator_by_chat_id( message.chat.id)): bot.send_message(message.chat.id, '☑️ Ответ отправлен ☑️', reply_markup=Handler._moder_panel.menu()) # elif (Handler._session.is_user_administrator_by_chat_id( message.chat.id)): bot.send_message(message.chat.id, '☑️ Ответ отправлен ☑️', reply_markup=Handler._admin_panel.menu()) else: bot.send_message(message.chat.id, '⚠ Упс. что-то пошло не так', reply_markup=panels.clearn_menu())
def send_mail(message: telebot.types.Message, message_wrapper: contents.Message): if (message.text == '[ ⚠️ Отмена ⚠️ ]'): if (Handler._session.is_user_moderator_by_chat_id( message.chat.id)): bot.send_message(message.chat.id, '⚠️ Ответ отменен ⚠️', reply_markup=Handler._moder_panel.menu()) # elif (Handler._session.is_user_administrator_by_chat_id( message.chat.id)): bot.send_message(message.chat.id, '⚠️ Ответ отменен ⚠️', reply_markup=Handler._admin_panel.menu()) else: bot.send_message(message.chat.id, '⚠ Упс. что-то пошло не так', reply_markup=panels.clearn_menu()) else: # Получение ника отвечающего nickname = Handler._session.get_user_nickname_by_chat_id( message.chat.id) # if (message.text): answer = contents.Text(nickname, message.chat.id, message.message_id, message.text).get() if (message.photo): answer = contents.Photo(nickname, message.chat.id, message.message_id, message.photo[-1].file_id, message.caption).get() if (message.document): answer = contents.Document(nickname, message.chat.id, message.message_id, message.document.file_id, message.caption).get() # Сохранение ответа в базе данных Handler._chat.append_message(answer) # Запись в таблицу answers уникального айди сообщения, айди модератора и пользователя # Можно использовать для анализа ответов модераторов Handler._chat.bind_answer(message.chat.id, message_wrapper.chat_id, answer.id) # Отправка сообщения его автору if (message.text): bot.send_message( message_wrapper.chat_id, 'От: <b>%s</b>\n\n%s' % (nickname, message.text), reply_to_message_id=message_wrapper.message_id, parse_mode='HTML') if (message.photo): caption = '\n\n' + message.caption if ( message.caption) else '' bot.send_photo(message_wrapper.chat_id, message.photo[-1].file_id, caption='От: <b>%s</b>%s' % (nickname, caption), parse_mode='HTML') if (message.document): caption = '\n\n' + message.caption if ( message.caption) else '' bot.send_document(message_wrapper.chat_id, message.document.file_id, caption='От: <b>%s</b>%s' % (nickname, caption), parse_mode='HTML') if (Handler._session.is_user_moderator_by_chat_id( message.chat.id)): bot.send_message( message.chat.id, '☑️ Сообщение пользователю %s отправлено ☑️' % message_wrapper.username, reply_markup=Handler._moder_panel.menu()) # elif (Handler._session.is_user_administrator_by_chat_id( message.chat.id)): bot.send_message( message.chat.id, '☑️ Сообщение пользователю %s отправлено ☑️' % message_wrapper.username, reply_markup=Handler._admin_panel.menu()) else: bot.send_message( message.chat.id, '☑️ Сообщение пользователю %s отправлено ☑️' % message_wrapper.username, reply_markup=panels.clearn_menu())
def text_handler(message: telebot.types.Message): # Если небыло команды /start но пользователь написал сразу сообщение автоматически 'запускает' бота if (not Handler._session.has_user_by_chat_id(message.chat.id)): Handler.start_handler(message) elif (Handler._session.is_user_blocked_by_chat_id(message.chat.id)): bot.send_message(message.chat.id, '‼️ Вы заблокированы ‼️') elif (message.text == '[ ♠️ Добавить модератора ♠️ ]'): if (Handler._session.is_user_administrator_by_chat_id( message.chat.id)): requests = Handler._session.export_requests() markup, body = Handler._admin_panel.adition_moderators( requests) bot.send_message(message.chat.id, body, reply_markup=markup) else: markup = panels.clearn_menu() bot.send_message( message.chat.id, '⚠ У вас нет прав на осуществление данной команды', reply_markup=markup) elif (message.text == '[ 💎 Все управляющие 💎 ]'): if (Handler._session.is_user_administrator_by_chat_id( message.chat.id)): managers = Handler._session.export_managers() markup, body = Handler._admin_panel.managers(managers) bot.send_message(message.chat.id, body, reply_markup=markup) else: markup = panels.clearn_menu() bot.send_message( message.chat.id, '⚠ У вас нет прав на осуществление данной команды', reply_markup=markup) elif (message.text == '[ 🔕 Черный список 🔕 ]'): if (Handler._session.is_user_administrator_by_chat_id( message.chat.id) or Handler._session.is_user_moderator_by_chat_id( message.chat.id)): blocked_users = Handler._session.export_blocked_users() markup, body = Handler._admin_panel.blacklist(blocked_users) bot.send_message(message.chat.id, body, reply_markup=markup) else: markup = panels.clearn_menu() bot.send_message( message.chat.id, '⚠ У вас нет прав на осуществление данной команды', reply_markup=markup) elif (message.text == '[ ⚙️ Состояние чата ⚙️ ]'): if (Handler._session.is_user_administrator_by_chat_id( message.chat.id) or Handler._session.is_user_moderator_by_chat_id( message.chat.id)): text = '' if (Handler._session.is_admin_chat_work): text += '\n✅ Модераторский чат включен' else: text += '\n🛑 Модераторский чат выключен' if (Handler._session.is_users_chat_work): text += '\n✅ Пользовательский чат включен' else: text += '\n🛑 Пользовательский чат выключен' bot.send_message(message.chat.id, text) else: markup = panels.clearn_menu() bot.send_message( message.chat.id, '⚠ У вас нет прав на осуществление данной команды', reply_markup=markup) elif (message.text in ('[ 🛑 Откл. пользовательский чат 🛑 ]', '[ ✅ Вкл. пользовательский чат ✅ ]', '[ 🛑 Откл. модераторский чат 🛑 ]', '[ ✅ Вкл. модераторский чат ✅ ]')): if (Handler._session.is_user_administrator_by_chat_id( message.chat.id)): if (message.text == '[ 🛑 Откл. пользовательский чат 🛑 ]'): Handler._session.disable_users_chat() if (message.text == '[ ✅ Вкл. пользовательский чат ✅ ]'): Handler._session.enable_users_chat() if (message.text == '[ 🛑 Откл. модераторский чат 🛑 ]'): Handler._session.disable_admin_chat() if (message.text == '[ ✅ Вкл. модераторский чат ✅ ]'): Handler._session.enable_admin_chat() # Разсылка измененны for manager in Handler._session.export_managers(): if (Handler._session.is_user_moderator_by_chat_id( manager.chat_id)): if (message.text == '[ 🛑 Откл. пользовательский чат 🛑 ]'): text = '🛑 Пользовательский чат выключен' elif (message.text == '[ ✅ Вкл. пользовательский чат ✅ ]'): text = '✅ Пользовательский чат включен' elif (message.text == '[ 🛑 Откл. модераторский чат 🛑 ]' ): text = '🛑 Модераторский чат выключен' elif (message.text == '[ ✅ Вкл. модераторский чат ✅ ]' ): text = '✅ Модераторский чат включен' else: text = '⚠ Непредвиденая комманда' bot.send_message(manager.chat_id, text) # elif (Handler._session.is_user_administrator_by_chat_id( manager.chat_id)): if (message.text == '[ 🛑 Откл. пользовательский чат 🛑 ]'): text = '🛑 Пользовательский чат выключен' elif (message.text == '[ ✅ Вкл. пользовательский чат ✅ ]'): text = '✅ Пользовательский чат включен' elif (message.text == '[ 🛑 Откл. модераторский чат 🛑 ]' ): text = '🛑 Модераторский чат выключен' elif (message.text == '[ ✅ Вкл. модераторский чат ✅ ]' ): text = '✅ Модераторский чат включен' else: text = '⚠ Непредвиденая комманда' bot.send_message( manager.chat_id, text, reply_markup=Handler._admin_panel.menu()) else: bot.send_message(manager.chat_id, '⚠ Вы решены свохи прав', reply_markup=panels.clearn_menu()) else: bot.send_message( message.chat.id, '⚠ У вас нет прав на осуществление данной команды', reply_markup=panels.clearn_menu()) elif (Handler._session.is_user_manager_by_chat_id(message.chat.id)): if (Handler._session.is_admin_chat_work): # nickname = Handler._session.get_user_nickname_by_chat_id( message.chat.id) # if (message.text): message_wrapper = contents.Text(nickname, message.chat.id, message.message_id, message.text).get() if (message.photo): message_wrapper = contents.Photo(nickname, message.chat.id, message.message_id, message.photo[-1].file_id, message.caption).get() if (message.document): message_wrapper = contents.Document( nickname, message.chat.id, message.message_id, message.document.file_id, message.caption).get() Handler._chat.append_message(message_wrapper) # Рассылка пользовательского сообщения управляющим for visitor in Handler._session.export_visitors(): Handler.process_manager_message(visitor.chat_id, message_wrapper) else: bot.send_message(message.chat.id, '⚠️ Администраторский чат отключен!') elif (Handler._session.is_user_visitor_by_chat_id(message.chat.id)): if (Handler._session.is_users_chat_work): # if (message.text): message_wrapper = contents.Text(message.chat.first_name, message.chat.id, message.message_id, message.text) if (message.photo): message_wrapper = contents.Photo(message.chat.first_name, message.chat.id, message.message_id, message.photo[-1].file_id, message.caption) if (message.document): message_wrapper = contents.Document( message.chat.first_name, message.chat.id, message.message_id, message.document.file_id, message.caption) # Рассылка пользовательского сообщения управляющим for manager in Handler._session.export_managers(): Handler.process_user_message(manager.chat_id, message_wrapper) Handler._chat.append_message(message_wrapper) else: bot.send_message(message.chat.id, '⚠️ Чат отключен!') else: bot.send_message(message.chat.id, '⚠️ Непредвиденая комманда')