def send(self, balance, bot=None): bot = bot or get_bot() if self.user and self.forward_message_id: message = bot.forward_message(chat_id=config.CHANNEL_NAME, from_chat_id=self.user, message_id=self.forward_message_id) else: if self.content.type == consts.CONTENT_PHOTO: message = bot.send_photo(config.CHANNEL_NAME, photo=self.content.file_id) elif self.content.type == consts.CONTENT_AUDIO: message = bot.send_audio(config.CHANNEL_NAME, audio=self.content.file_id) elif self.content.type == consts.CONTENT_VOICE: message = bot.send_voice(config.CHANNEL_NAME, voice=self.content.file_id) elif self.content.type == consts.CONTENT_VIDEO: message = bot.send_video(config.CHANNEL_NAME, video=self.content.file_id) elif self.content.type == consts.CONTENT_STICKER: message = bot.send_sticker(config.CHANNEL_NAME, sticker=self.content.file_id) else: message = bot.send_message(config.CHANNEL_NAME, text=self.content.text, parse_mode='Markdown') self.balance = balance self.message_id = message.message_id self.save() if self.user: send_message(bot, int(self.user), text='your message was posted')
def send(amount, bot=None): bot = bot or get_bot() name = 'like' if self.is_like else 'dislike' self.amount = amount self.save() if self.is_like: self.post.balance += amount else: self.post.balance -= amount if self.post.balance <= 0: self.post.is_deleted = True self.post.save() if self.user: send_message(bot, int(self.user), text='your {} accepted'.format(name)) if self.post.user: send_message(bot, int(self.post.user), text='your post received {} for {}ETH'.format( name, self.amount)) # TODO: what if delete return error, but db already changed if self.post.balance <= 0: bot.delete_message(chat_id=config.CHANNEL_NAME, message_id=self.post.message_id) if self.post.user: send_message(bot, int(self.post.user), text='your post was deleted')
def main(user_data, chat_id): user_data['scrp_info'] = [] for lines in user_data['first_info']: ostad = re.search(r'\t{2}\(\(\((?P<ostad>.*$)', lines).group('ostad') dars = re.search(r'\t{3}(?P<dars>.*?)\t', lines).group('dars') lines = lines[0:lines.find('\t\t\t')] lines = list(filter(lambda x: x != '', lines.split('**'))) p = r'(?P<first_comment>.*?)\s*(?P<day>چهارشنبه|سه شنبه|دوشنبه|يکشنبه|پنج شنبه|شنبه)\s*(?P<second_comment>.*?)\s*(?P<start>\d{2}\:\d{2})\s+\-\s+(?P<end>\d{2}\:\d{2})\s*(?P<last_comment>.*)' for line in lines: try: res = re.search(p, line) if res.group('day') == '' or res.group( 'start') == '' or res.group('end') == '': raise ValueError user_data['scrp_info'].append( res.group('day') + '\t' + res.group('start') + '\t' + res.group('end') + '\t' + ' '.join([ res.group('first_comment'), res.group('second_comment'), res.group('last_comment') ]) + '\t' + dars + '\t' + ostad) except Exception as e: logger.info(dars) logger.info(str(e.args)) logger.info(str(user_data)) bot = helpers.get_bot() bot.send_message( chat_id=chat_id, text='درس ' + dars + ' : \"' + line + ' ' + ostad + ' \"' + 'یه مشکلی داره نتونستم بیارم تو برنامه. اگه خواستی میتونی با ' 'استفاده از (ویرایش برنامه) دستی یه بخش جدید به برنامه اضافه کنی', reply_markup=markup) continue logger.info('110') del user_data['first_info'] if 'info' not in user_data: user_data['info'] = user_data['scrp_info']
def main(user_data, chat_id, from_scrp=False): mpl.interactive(False) days = [] starts = [] ends = [] coms = [] darss = [] if from_scrp: data_of_time_table = user_data['scrp_info'] del user_data['scrp_info'] else: data_of_time_table = user_data['info'] colors = ['pink', 'lightgreen', 'lightblue', 'crimson', 'salmon', 'yellow', 'silver', 'yellowgreen', 'y', 'tan', 'orchid', 'c', 'aqua', 'deeppink'] for line in data_of_time_table: data = line.split('\t') days.append(get_display(persian_reshaper.reshape(data[0]))) starts.append(float(data[1].split(':')[0]) + float(data[1].split(':')[1]) / 60) ends.append(float(data[2].split(':')[0]) + float(data[2].split(':')[1]) / 60) if len(data) == 6: coms.append(get_display(persian_reshaper.reshape(data[3]))) darss.append(get_display(persian_reshaper.reshape(data[4]))) days2 = set(days) prop = fm.FontProperties(fname=os.path.dirname(os.path.abspath(__file__))+'/fonts/XP_ZibaBd.ttf') # os.path.abspath('app/fonts/XP_ZibaBd.ttf')) dd = dict((ds(x), x) for x in days2) sorted_days = [] for key in sorted(dd): sorted_days.append(dd[key]) darss = list(set(darss)) nl = dict((darss[x], x) for x in range(len(darss))) mn = min(starts) mx = max(ends) fig = plt.figure(figsize=(16, 9)) gc.collect() for i, line in zip(range(len(days)), data_of_time_table): data = line.split('\t') this_start = float(data[1].split(':')[0]) + float(data[1].split(':')[1]) / 60 this_end = float(data[2].split(':')[0]) + float(data[2].split(':')[1]) / 60 temp3 = [] if len(data[3]) > 200 * (this_end - this_start) / (mx - mn): # 300 for iji in range(int(len(data[3]) / (213 * (this_end - this_start) / (mx - mn))) + 1): # 32 temp3.append(data[3][iji * int(213 * (this_end - this_start) / (mx - mn)):int(213 * ( this_end - this_start) / (mx - mn)) * (iji + 1)]) # 32 data[3] = '\n'.join(temp3) temp5 = [] if len(data[5]) > (213 * (this_end - this_start) / (mx - mn)): # 32 for ijl in range(int(len(data[5]) / (226 * (this_end - this_start) / (mx - mn))) + 1): # 34 temp5.append(data[5][ijl * int(226 * (this_end - this_start) / (mx - mn)):int(226 * (this_end - this_start) / (mx - mn)) * (ijl + 1)]) # 34 data[5] = '\n'.join(temp5) plt.fill_between([starts[i] + 0.05, ends[i] - 0.05], [sorted_days.index(days[i]) + 0.53, sorted_days.index(days[i]) + 0.53], [sorted_days.index(days[i]) + 1.3, sorted_days.index(days[i]) + 1.43], color=colors[nl[get_display(persian_reshaper.reshape(data[4]))]], edgecolor='red', linewidth=5) temp4 = [] if len(data[4]) > (150 * (this_end - this_start) / (mx - mn)): # 24 for ijk in range(int(len(data[4]) / (180 * (this_end - this_start) / (mx - mn))) + 1): # 27 temp4.append(data[4][ijk * int(180 * (this_end - this_start) / (mx - mn)):int(180 * (this_end - this_start) / (mx - mn)) * (ijk + 1)]) # 27 data[4] = '\n'.join(temp4) plt.text(starts[i] + 0.25, sorted_days.index(days[i]) + 0.55, '{0}:{1:0>2}'.format(int(data[1].split(':')[0]), int(data[1].split(':')[1])), va='top', fontsize=7) plt.text(ends[i] - 0.05, sorted_days.index(days[i]) + 0.55, '{0}:{1:0>2}'.format(int(data[2].split(':')[0]), int(data[2].split(':')[1])), va='top', fontsize=7) plt.text((starts[i] + ends[i]) * 0.5, (sorted_days.index(days[i]) + 0.5 + sorted_days.index(days[i]) + 1.4) * 0.5 - 0.2, get_display(persian_reshaper.reshape(data[4])), ha='center', va='center', fontproperties=prop, fontsize=13 - 1.5 * len(temp4)) plt.text((starts[i] + ends[i]) * 0.5, (sorted_days.index(days[i]) + sorted_days.index(days[i]) + 2.05) * 0.5, get_display(persian_reshaper.reshape(data[3])), ha='center', va='center', fontsize=9 - len(temp3)) plt.text((starts[i] + ends[i]) * 0.5, (sorted_days.index(days[i]) + sorted_days.index(days[i]) + 2) * 0.5 + 0.23, get_display(persian_reshaper.reshape(data[5])), ha='center', va='center', fontsize=8 - len(temp5)) gc.collect() examsb = [] for line in user_data['exams']: pattern = r'^.*(?P<y>\d{4})\/(?P<m>\d{2})\/(?P<d>\d{2}).*از ((?P<h>\d{2})\:\d{2}) تا.*$' examsb.append(re.search(pattern, line)) exams = dict( (int(k.group('h')) / 24 + int(k.group('d')) + (int(k.group('m')) - 1) * 31 + (int(k.group('y')) - 1) * 31 * 12, list()) for k in examsb if k is not None) [exams[int(k.group('h')) / 24 + int(k.group('d')) + (int(k.group('m')) - 1) * 31 + ( int(k.group('y')) - 1) * 31 * 12].append(k.group()) for k in examsb if k is not None] mtermsb = [] for line in user_data['midterm']: pattern = r'^.*(?P<y>\d{4})\/(?P<m>\d{1,2})\/(?P<d>\d{1,2}).*$' mtermsb.append(re.search(pattern, line)) mterms = dict( (int(k.group('d')) + (int(k.group('m')) - 1) * 31 + (int(k.group('y')) - 1) * 31 * 12, list()) for k in mtermsb if k is not None) [mterms[int(k.group('d')) + (int(k.group('m')) - 1) * 31 + ( int(k.group('y')) - 1) * 31 * 12].append(k.group()) for k in mtermsb if k is not None] jj = 0 exx = mx plt.text(exx + 0.5, (1 + 5.5 * len(sorted_days)) * 0.2, get_display(persian_reshaper.reshape(':پایانترم')), fontsize=13) for key in sorted(exams): for j in exams[key]: if jj == 8: exx -= 4 jj = 0 plt.text(exx, (jj + 1.5 + 5.5 * len(sorted_days)) * 0.2, get_display(persian_reshaper.reshape(j)), fontsize=11) jj += 1 if from_scrp: mterms = [] if not from_scrp: if 'midterm' in user_data: plt.text(mn - 0.05, (1 + 5.5 * len(sorted_days)) * 0.2, get_display(persian_reshaper.reshape('میانترم:')), fontsize=11) jj2 = 0 exx = mn + 3 for key in sorted(mterms): for j in mterms[key]: if jj2 == 8: exx += 4 jj2 = 0 plt.text(exx, (jj2 + 1.5 + 5.5 * len(sorted_days)) * 0.2, get_display(persian_reshaper.reshape(j)), fontsize=11) jj2 += 1 ax = fig.add_subplot(111) ax.set_ylim(len(days2) + 2 / 4, 0.4) ax.set_xlim(mx, mn) ax.set_yticks(range(1, len(days2) + 1)) ax.set_yticklabels(sorted_days) ax.xaxis.grid() ax2 = ax.twiny().twinx() ax2.set_ylim(ax.get_ylim()) ax2.set_xlim(ax.get_xlim()) ax2.set_yticks(ax.get_yticks()) ax2.set_yticklabels(sorted_days, fontsize=13) plt.subplots_adjust(left=0.06, bottom=0.26, right=0.95, top=0.96, wspace=0.2, hspace=0.2) bot = helpers.get_bot() sent_message = bot.send_message(chat_id=chat_id, text='داره میاد!!') bot.send_chat_action(chat_id=chat_id, action=telegram.ChatAction.UPLOAD_DOCUMENT) plt.savefig('{0}.png'.format(user_data['username'] + 'barn'), dpi=120) time.sleep(0.5) plt.savefig('{0}.pdf'.format(user_data['username'] + 'barn')) plt.cla() plt.clf() ax.cla() ax2.cla() gc.collect() plt.close('all') time.sleep(0.5) with open('{0}.png'.format(user_data['username'] + 'barn'), 'rb') as file_to_send: bot.send_document(chat_id=chat_id, document=file_to_send) bot.delete_message(chat_id=chat_id, message_id=sent_message.message_id) bot.send_chat_action(chat_id=chat_id, action=telegram.ChatAction.UPLOAD_DOCUMENT) time.sleep(1) with open('{0}.pdf'.format(user_data['username'] + 'barn'), 'rb') as file_to_send: bot.send_document(chat_id=chat_id, document=file_to_send, reply_markup=markup) # plt.show() time.sleep(2) os.remove('{0}.png'.format(user_data['username'] + 'barn')) os.remove('{0}.pdf'.format(user_data['username'] + 'barn'))
def main(user_data, chat_id, proxy, protocol='s'): markup = helpers.markup score_markup = helpers.score_markup try: bot = helpers.get_bot() retry_strategy = Retry( total=5, status_forcelist=[429, 500, 502, 503, 504], method_whitelist=[ "HEAD", "GET", "PUT", "DELETE", "OPTIONS", "TRACE", "POST" ], backoff_factor=1, ) adapter = HTTPAdapter(max_retries=retry_strategy) http = requests.Session() http.mount("https://", adapter) http.mount("http://", adapter) data = { 'Command': 'LOGIN', 'username': user_data['username'], 'password': user_data['password'], #'SSMUsername_txt': user_data['username'], #'SSMPassword_txt': user_data['password'], } sent_message = bot.send_message(chat_id=chat_id, text='وارد شدن با یوزرنیم و پسورد ...') sent_message = sent_message.message_id login_request = http.post( 'http' + protocol + '://sada.guilan.ac.ir/SubSystem/Edari/PRelate/Site/SignIn.aspx', data=data, timeout=7, proxies=proxy) dashboard_param_search = re.search( r'\(\"http' + protocol + r'\:\/\/sada\.guilan\.ac\.ir\/Dashboard\.aspx\?param\=(?P<param>.*?)\"\)', login_request.text) if dashboard_param_search is None: if login_request.text.find( 'رمز عبور شما اشتباه ميباشد' ) >= 0 or login_request.text.find( 'نام کاربري يا کلمه عبور شما اشتباه ميباشد') >= 0: raise MyError('incorrect password_or_username', 'iup') # incorrect username password else: raise Exception( 'dashbord_param or incorrect_password_or_username_message not found', 'dpnf') # dashbord param not found dashboard_param = dashboard_param_search.group('param') bot.edit_message_text(chat_id=chat_id, message_id=sent_message, text='رفتن به قسمت فرم تثبیت انتخاب واحد ...') report_request = http.post('https://sada.guilan.ac.ir/Dashboard.aspx', params={'param': dashboard_param}, data={'Command': 'GET_TAB_INFO:020203'}, timeout=7, proxies=proxy) report_param_search = re.search( r'\/Subsystem\/Amozesh\/Sabtenam\/Tasbir\/Report\/Report\.aspx\?param\=(?P<param>.*)', report_request.text) if report_param_search is not None: raise MyError('evalList not found', 'not_eval') # evalList else: if report_request.text.find('بدهکار') >= 0: raise MyError('report problem because of debt', 'd') # debt elif 'eval' in report_request.text.lower(): evalList_param_search = re.search( r'\/SubSystem\/Amozesh\/Eval\/List\/EvalList\.aspx\?param\=(?P<param>.*)', report_request.text) evalList_param = evalList_param_search.group('param') evalList_page = http.get( 'http' + protocol + '://sada.guilan.ac.ir/SubSystem/Amozesh/Eval/List/EvalList.aspx', params={'param': evalList_param}, timeout=7, proxies=proxy) bot.edit_message_text(chat_id=chat_id, message_id=sent_message, text='استخراج لیست ارزشیابیها ...') soup = BeautifulSoup(evalList_page.text, 'lxml') eval_list = soup.find_all('table')[-1].find_all('tr') while eval_list: eval_elem = eval_list.pop() Command_data = 'AnswerSubject♥' + eval_elem.find_all( 'td')[0].text + '♥' + eval_elem.find_all('td')[3].text eval_request = http.post( 'http' + protocol + '://sada.guilan.ac.ir/SubSystem/Amozesh/Eval/List/EvalList.aspx', params={'param': evalList_param}, data={'Command': Command_data}, timeout=7, proxies=proxy) eval_param = eval_request.text eval_page = http.get( 'http' + protocol + '://sada.guilan.ac.ir/SubSystem/Amozesh/Eval/Answer/Subject/EvalAnswerSubject.aspx', params={'param': eval_param}, timeout=7, proxies=proxy) bot.edit_message_text(chat_id=chat_id, message_id=sent_message, text='استخراج لیست استادها ...') inner_soup = BeautifulSoup(eval_page.text, 'lxml') professor_list = inner_soup.find_all('table')[-1].find_all( 'tr') while professor_list: professor_elem = professor_list[-1] Command_data = 'Answer♥' + professor_elem.find_all('td')[0].text + '♥' + professor_elem.find_all('td')[1].text + '♥' + professor_elem.find_all('td')[2].text +\ '♥' + professor_elem.find_all('td')[3].text + '♥' + professor_elem.find_all('td')[4].text + '♥' + professor_elem.find_all('td')[7].text professor_request = http.post( 'http' + protocol + '://sada.guilan.ac.ir/SubSystem/Amozesh/Eval/Answer/Subject/EvalAnswerSubject.aspx', params={'param': eval_param}, data={'Command': Command_data}, timeout=7, proxies=proxy) questions_param = professor_request.text questions_page = http.get( 'http' + protocol + '://sada.guilan.ac.ir/SubSystem/Amozesh/Eval/Answer/ListItems.aspx', params={'param': questions_param}, timeout=7, proxies=proxy) bot.send_message( chat_id=chat_id, text=professor_elem.find_all('td')[7].text + ' ' + professor_elem.find_all('td')[8].text + '\n نمره رو بزن:', reply_markup=score_markup) timer = 0 while timer <= 20: if user_data['nomre'] == -1: if timer == 20: bot.send_message( chat_id=chat_id, text='خب تایمت تموم شد! بای بای!', reply_markup=markup) return -1 sleep(1.1) timer += 1 else: break score = user_data['nomre'] qs_soup = BeautifulSoup(questions_page.text, 'lxml') qs = qs_soup.find_all('table')[-1].find_all('tr') x = 'Insert:??*' post_data = {} one_random_q = randint(0, len(qs) - 1) for q_i, q in enumerate(qs): nomre = score if len(q.find_all('td')) > 3: x += q.find_all('td')[3].text x += '?' if q_i == one_random_q: if nomre == 8: nomre -= 1 elif nomre == 0: nomre += 1 else: nomre = nomre + [1, -1][randint(0, 1)] for inp_el in q.find_all('input'): # nomre = 1 # means 19 if inp_el['id'][:3] == 'rb' + str(nomre): post_data[inp_el['id']] = 'true' x += inp_el['value'] x += '?' x += q.find_all('td')[10].text x += '*' x += ':' post_data['Command'] = x logger.info('EVALLLLLLLL ' + str(post_data)) professor_eval_request = http.post( 'http' + protocol + '://sada.guilan.ac.ir/SubSystem/Amozesh/Eval/Answer/ListItems.aspx', params={'param': questions_param}, data=post_data, timeout=7, proxies=proxy) if 'ok' in professor_eval_request.text.lower(): professor_list.pop() else: bot.send_message( chat_id=chat_id, text='عه فکر کنم نمره ثبت نشد. دوباره !!') user_data['nomre'] = -1 bot.send_message(chat_id=chat_id, text='خب تموم شششددددد !!!!!', reply_markup=markup) del soup, qs_soup, inner_soup except MyError as e: logger.info( str(user_data['username'] + ' || ' + user_data['password'])) logger.warning(str(e.args)) error_code = e.args[-1] if error_code == 'iup': text_message = 'رمز عبور یا نام کاربری اشتباه' markup = helpers.markup elif error_code == 'd': text_message = 'نیاوردن فرم تثبیت انتخاب واحد بدلیل بدهکار بودن دانشجو' markup = helpers.markup elif error_code == 'not_eval': text_message = 'مثل اینکه فرم ارزیابی پیدا نشده.' markup = helpers.markup bot.send_message(chat_id=chat_id, text='خب به ارور رسیدیم! : ' + text_message, reply_markup=markup) except ConnectionError as e: logger.info( str(user_data['username'] + ' || ' + user_data['password'])) logger.warning(str(e.args)) logger.warning('CONECTION PROBLEM (WITH PROXY or maybe WITHOUT PROXY)') bot.send_message( chat_id=chat_id, text= 'مشکل در ارتباط با سایت!!! شاید سایت خراب باشه یا شاید بازم سایت رو یه کاری کردن فقط با آیپی ایران بشه رفت و سرور این ربات هم خارج از ایرانه.' + ' اگه پراکسی ساکس۴ ایران داری ممنون میشم واسه این آیدی بفرستیش' + ': @ArmanG98\n' + 'میتونی دوباره تست کنی. اگه سایت اوکی بود و بازم همین' + ' ارور رو دیدی چند ساعت دیگه دوباره امتحان کن. ', reply_markup=helpers.markup) from config import CHAT_ID_OF_ADMIN bot.send_message(chat_id=CHAT_ID_OF_ADMIN, text='', reply_markup=helpers.markup) except Exception as e: logger.info( str(user_data['username'] + ' || ' + user_data['password'])) logger.warning(str(e.args)) markup = helpers.markup bot.send_message(chat_id=chat_id, text='خب به ارور عجیبی برخوردیم!', reply_markup=markup)
def main(user_data, chat_id, proxy, protocol='s', way='report', prev_term=False, number_of_term=-1): try: bot = helpers.get_bot() scrapper = ScrapperUsingRequest(protocol=protocol, proxy=proxy) sent_message = bot.send_message(chat_id=chat_id, text='وارد شدن با یوزرنیم و پسورد ...') sent_message = sent_message.message_id # dash_param = scrapper.login(user_data['username'], user_data['password']) dashboard = scrapper.login(user_data['username'], user_data['password']) dashboard_access_token = dashboard['accessToken'] if way == 'eval': from time import sleep score_markup = helpers.score_markup bot.edit_message_text(chat_id=chat_id, message_id=sent_message, text='استخراج لیست ارزشیابیها ...') eval_list_url = dashboard['linkInfo']['url'] if not 'eval' in eval_list_url.lower(): raise MyError('مثل اینکه فرم ارزیابی پیدا نشده.', 'not_eval') eval_list, evalList_param = scrapper.get_eval_list(eval_list_url) while eval_list: eval_elem = eval_list.pop() bot.edit_message_text(chat_id=chat_id, message_id=sent_message, text='استخراج لیست استادها ...') professor_list, eval_param = scrapper.get_professor_list( eval_elem, evalList_param) while professor_list: professor_elem = professor_list[-1] qs, questions_param = scrapper.get_questions( professor_elem, eval_param) bot.send_message( chat_id=chat_id, text=professor_elem.find_all('td')[7].text + ' ' + professor_elem.find_all('td')[8].text + '\n نمره رو بزن:', reply_markup=score_markup) timer = 0 while timer <= 20: if user_data['nomre'] == -1: if timer == 20: bot.send_message( chat_id=chat_id, text='خب تایمت تموم شد! بای بای!', reply_markup=markup) return -1 sleep(1.1) timer += 1 else: break score = user_data['nomre'] answer_result = scrapper.answer_qs_professor( qs, score, questions_param) if answer_result: professor_list.pop() else: bot.send_message( chat_id=chat_id, text='عه فکر کنم نمره ثبت نشد. دوباره !!') user_data['nomre'] = -1 bot.send_message(chat_id=chat_id, text='خب تموم شششددددد !!!!!', reply_markup=markup) return 11 elif way == 'report': bot.edit_message_text(chat_id=chat_id, message_id=sent_message, text='گرفتن فرم تثبیت انتخاب واحد ...') report_page = scrapper.get_report(dashboard_access_token) bot.edit_message_text(chat_id=chat_id, message_id=sent_message, text='استخراج اطلاعات از سایت ...') infos = scrapper.get_infos_from_report_page(report_page.text) elif way == 'workbook': bot.edit_message_text(chat_id=chat_id, message_id=sent_message, text='رفتن به قسمت کارنامه ترمی ...') workbook_param = scrapper.get_workbook(dashboard_access_token) bot.edit_message_text(chat_id=chat_id, message_id=sent_message, text='گرفتن فرم انتخاب واحد ترم ' + ('موردنظر' if prev_term else 'آخر') + ' ...') if prev_term and number_of_term == -1: from telegram import ReplyKeyboardMarkup terms_keyboard = scrapper.get_term(workbook_param, prev_term, number_of_term) terms_markup = ReplyKeyboardMarkup(terms_keyboard, one_time_keyboard=True) bot.send_message(chat_id=chat_id, text='برنامه کدوم ترم:؟', reply_markup=terms_markup) return 11 term_page = scrapper.get_term(workbook_param, prev_term, number_of_term) bot.edit_message_text(chat_id=chat_id, message_id=sent_message, text='استخراج اطلاعات از سایت ...') infos = scrapper.get_infos_from_term_page(term_page.text) user_data['first_info'] = infos['tabel'] user_data['midterm'] = infos['midterm'] user_data['exams'] = infos['exams'] bot.edit_message_text(chat_id=chat_id, message_id=sent_message, text='پردازش روی اطلاعات بدست اومده ...') text_process.main(user_data, chat_id) gc.collect() bot.edit_message_text(chat_id=chat_id, message_id=sent_message, text='ساختن تصویر برنامه ...') helpers.ProcessManager.run_join(target=time_table_file.main, args=(user_data, chat_id, True)) except MyError as e: logger.info( str(user_data['username'] + ' || ' + user_data['password'])) logger.warning(str(e.args)) error_code = e.args[-1] if error_code == 'fs': text_message = e.args[0] elif error_code == 'rpne': text_message = e.args[0] elif error_code == 'not_eval': text_message = e.args[0] # elif error_code == 'iup': # text_message = 'رمز عبور یا نام کاربری اشتباه' # markup = helpers.markup # elif error_code == 'empty': # text_message = 'جدول این ترم خالیه شاید تو ترم تابستون باشی و واحد نداشته باشی' + '\nمیتونی واسه ترمهای قبل رو بگیری' # markup = helpers.markup # elif error_code == 'd': # text_message = 'نیاوردن فرم تثبیت انتخاب واحد بدلیل بدهکار بودن دانشجو' + '\n' # text_message += 'چون فرم تثبیت کار نکرده از یه راه دیگه میشه رفت الان یه دکمه دیگه اضافه کردم واست اونو میتونی امتحان کنی. منتها امتحانا رو نمیتونم واست لیست کنم.' # reply_keyboard = [x.copy() for x in helpers.reply_keyboard] # reply_keyboard[1].append('👈گرفتن برنامه از یه راه دیگه واسه دانشجوهایی که بدهی دارن') # from telegram import ReplyKeyboardMarkup # markup = ReplyKeyboardMarkup(reply_keyboard, one_time_keyboard=True) elif error_code == 'eval': text_message = e.args[0] + '\n' text_message += 'اگه حال نداری همهی سوالای ارزشیابی رو جواب بدی میتونی از دکمه پیچوندن فرم ارزیابی استفاده کنی!' bot.send_message(chat_id=chat_id, text='خب به ارور رسیدیم! : ' + text_message, reply_markup=markup) except ConnectionError as e: logger.info( str(user_data['username'] + ' || ' + user_data['password'])) logger.warning(str(e.args)) logger.warning('CONECTION PROBLEM (WITH PROXY or maybe WITHOUT PROXY)') bot.send_message( chat_id=chat_id, text= 'مشکل در ارتباط با سایت!!! شاید سایت خراب باشه یا شاید بازم سایت رو یه کاری کردن فقط با آیپی ایران بشه رفت و سرور این ربات هم خارج از ایرانه.' + ' اگه پراکسی ساکس۴ ایران داری ممنون میشم واسه این آیدی بفرستیش' + ': @ArmanG98\n' + 'میتونی دوباره تست کنی. اگه سایت اوکی بود و بازم همین' + ' ارور رو دیدی چند ساعت دیگه دوباره امتحان کن. ', reply_markup=helpers.markup) from config import CHAT_ID_OF_ADMIN bot.send_message(chat_id=CHAT_ID_OF_ADMIN, text='hi admin! fix connection problem please!', reply_markup=helpers.markup) except Exception as e: logger.info( str(user_data['username'] + ' || ' + user_data['password'])) logger.warning(str(e.args)) traceback.print_exc() bot.send_message(chat_id=chat_id, text='خب به ارور عجیبی برخوردیم!', reply_markup=helpers.markup)