async def start(message: types.Message): id = message.from_user.id if len(message.text.split()) > 2: # tmp to test db try: id = int(message.text.split()[1]) except: message.answer('Error!') return reply = '' user = User.select().where(User.id == id) if user.exists(): await send_message( message.from_user.id, f'{user.get().nickname}, ' + 'you are already exist in db!') else: if len(message.text.split()) > 2: # tmp to test db try: nickname = ''.join(message.text.split()[2:])[:16] except: nickname = nickname_generator('Player') # end test elif type(message.from_user.username) is str: nickname = message.from_user.username[:16] elif type(message.from_user.first_name) is str: nickname = message.from_user.first_name[:16] elif type(message.from_user.last_name) is str: nickname = message.from_user.last_name[:16] else: nickname = nickname_generator('Player') user = User.select().where(User.nickname == nickname) if user.exists(): reply += f'{nickname}, your name has already been taken.\n' nickname = nickname_generator(nickname) reply += f'We will call you {nickname}.\n' User.create(id=id, nickname=nickname) await send_message(message.from_user.id, reply + f'Hello, {nickname}!')
async def echo(message: Message): global reqv, uDate, uTask, todo if reqv == 3: uDate = message.text try: time.strptime(uDate, "%d.%m.%Y") except ValueError: message.answer(text="ne verniy format dati") reqv = 0 return if uDate in todo: if len(todo[uDate]) == 1: tmp = todo.pop(uDate) await message.answer(f"zadacha '{tmp}' - udalena") else: await message.answer("Kakuy zadachu nado udalitb ?") tmp = 1 for task in todo[uDate]: await message.answer(f"[{tmp}]- {task}") tmp += 1 reqv = 4 else: await message.answer("Net zadach na etu datu") reqv = 0 elif reqv == 4: try: int(message.text) except ValueError: await message.answer("Ne vernii format command") reqv = 0 return if len(todo[uDate]) <= int(message.text): await message.answer(f"zadacha '{}' - udalena")
def setUp(self): self.reserves = [] self.strings = RuReserve self.chat = Chat() self.chat.id = 101 self.user = User() self.user.first_name = "Firstname" self.user.id = 111 dp = Dispatcher() self.data_adapter = MemoryDataAdapter() self.state_manager = StateManager(self.data_adapter) self.processor = ReserveProcessor(dp, self.state_manager, self.strings) message = Message() message.chat = self.chat message.from_user = self.user message.message_id = 121 message.text = "Some text" message.answer = self.answer_mock message.delete = self.delete_mock message.edit_text = self.edit_text_mock self.test_message = message callback = CallbackQuery() callback.bot = Bot() callback.answer = self.callback_answer_mock callback.message = message callback.from_user = User() callback.from_user.id = 101 self.test_callback_query = callback
async def cancel_handler(message: Message): user_id = message.from_user.id storage = Storage.get_current() user_data = await storage.get_data(user=user_id) de = user_data.get('deleted_episode') if de: asyncio.create_task(message.bot.send_chat_action(user_id, 'typing')) # todo: use lock logger.debug(f"restoring deleted notification") sess = await trakt_session(user_id, storage) del user_data['deleted_episode'] se, rfh_data, _ = await asyncio.gather( sess.search_by_episode_id(de, extended=True), sess.remove_from_history(de), storage.set_data(user=user_id, data=user_data), ) logger.debug((se, rfh_data)) await CalendarNotification.send( message.bot, TraktClient.get_current(), storage, user_id, se, watched=False, ) else: await asyncio.gather( storage.finish(user=user_id), message.answer("Whatever it was, it was canceled."), )
async def successful_payment_handler(message: types.Message) -> None: payment = message.successful_payment donation_id = str(uuid4())[:8] amt = Decimal(payment.total_amount) / 100 dt = datetime.now().replace(microsecond=0) async with pool.acquire() as conn: await conn.execute( """\ INSERT INTO donation ( donation_id, user_id, amount, donate_time, telegram_payment_charge_id, provider_payment_charge_id ) VALUES ($1, $2, $3::NUMERIC, $4, $5, $6);""", donation_id, message.from_user.id, str(amt), dt, payment.telegram_payment_charge_id, payment.provider_payment_charge_id, ) await asyncio.gather( message.answer( (f"Your donation of {amt} HKD is successful.\n" "Thank you for your support! :D\n" f"Donation id: #on9wcbot_{donation_id}"), parse_mode=types.ParseMode.HTML, ), send_admin_group( (f"Received donation of {amt} HKD from {message.from_user.get_mention(as_html=True)} " f"(id: <code>{message.from_user.id}</code>).\n" f"Donation id: #on9wcbot_{donation_id}"), parse_mode=types.ParseMode.HTML, ))
async def echo(message: types.Message): text = message.text if session.query(Car).filter_by(BIN=text).count() > 0: await message.answer("Find car by BIN") await(message.answer(session.query(Car).filter_by(BIN=text).first())) else: await message.answer("Not found car by BIN") if session.query(Car).filter_by(VIN=text).count() > 0: await message.answer("Find car by VIN") await(message.answer(session.query(Car).filter_by(VIN=text).first())) else: await message.answer("Not found car by VIN") if session.query(Car).filter_by(car_number=text).count() > 0: await message.answer("Find car by car_number") await(message.answer(session.query(Car).filter_by(car_number=text).first())) else: await message.answer("Not found car by car_number")
def patched_message(text, chat_id): resp_queue = Queue() message = Message(text=text, chat=chat_id) async def _answer(txt, *_, **__): resp_queue.put_nowait(txt) message.answer = _answer return message, resp_queue
async def enter_group_faculty_name(msg: types.Message, state: FSMContext): async with state.proxy() as data: if msg.text not in get_faculties(): return await msg.answer("Выберите факультет с клавиатуры!", reply_markup=faculty_kb) data["group_faculty_name"] = msg.text await NewGroup.next() return msg.answer("Выберите направление: ", reply_markup=get_direction_kb(msg.text))
async def enter_group_name(msg: types.Message, state: FSMContext): async with state.proxy() as data: if msg.text: data["group_name"] = msg.text await NewGroup.next() return msg.answer("Выберите факультет: ", reply_markup=faculty_kb) return await msg.answer( "Название не может быть пустым! Попробуйте ввести снова или нажмите /cancel" )
async def test_cmd_start(self): """Proceed /start command""" message = Message() message.answer = self.answer_mock await self.processor.cmd_start(message) passed, message = self.assert_params(self.result_text, self.strings.start_message) assert passed, message
async def echo(message:Message): global reqv, uDate, uTask, todo if reqv == 1: uDate = message.text try: time.strptime(uDate, "%d.%m.%Y") except ValueError: message.answer(text = "ne verniy format dati") reqv = 0 return await message.answer(text = "Chto nujno sdelatb?") reqv = 2 elif reqv == 2: uTask = message.text if uDate in todo: todo [ uDate ].append( uTask ) else: todo[uDate] = [uTask] await message.answer(f"dobavlena zadacha'{uTask}'na {uDate}") reqv = 0 if uDate in todo: if len(todo[uDate]) == 1: tmp = todo.pop(uDate) await message.answer(f"Задача '{tmp}' - удалена ") else: await message.answer("Какую задачу удалить?") tmp = 1 for task in todo[ uDate ]: await message.answer(f"[{tmp}] - {task}") tmp += 1 reqv = 4 else: await message.answer("Нет задача на эту дату") reqv = 0 elif reqv == 4 try: int(message.text) except ValueError: await message.answer("Не верный формат команды") if len (todo[ uDate ]) <= int(message.text):
async def send_numbers(message: types.Message, state: FSMContext): try: count = int(message.text) except: await message.answer('Нужно число') return if count > 0: await asyncio.gather(*[message.answer(str(i)) for i in range(count)]) else: for i in range(-count): await message.answer(str(i))
async def echo(message: Message): global reqv, uDate, uTask, todo if reqv == 1: uDate = message.text try: time.strptime(uDate, "%d.%m.%Y") except ValueError: message.answer(text="ne verniy format dati") reqv = 0 return await message.answer(text="Chto nujno sdelatb?") reqv = 2 elif reqv == 2: uTask = message.text if uDate in todo: todo[uDate].append(uTask) else: todo[uDate] = [uTask] await message.answer(f"dobavlena zadacha'{uTask}'na {uDate}") reqv = 0
async def echo(message:Message): global reqv, uDate, uTask, todo if reqv == 1: uDate = message.text try: time.strftime(uDate, "%d.%m.%Y") #12.02.2021 except ValueError: message.answer(text = "не верный формат даты") reqv = 0 return await message.answer(text = "Что нужно сделать??") reqv = 2 elif reqv =2: uTask = message.text if uDate in todo: todo[ uDate ].append( uTask ) else: todo[ uDate ] = [ uTask ] await message(f"Добавлена задача '{uTask}' на {uDate}") reqv = 0
async def set_sex(message: types.Message): if message.text == "Я парень": sex = 'мужской' elif message.text == "Я девушка": sex = 'женский' else: return message.answer( "Прости, но я не понял тебя.\nВведи соответствующую кнопку внизу для ответа" ) await PG.add_user_info(message.chat.id, "sex", sex) await Profile.age.set() await message.answer("Сколько тебе лет?", reply_markup=types.ReplyKeyboardRemove())
async def on_watch_behavior_handler(message: Message, command_args, command_args_error): if command_args_error: await message.answer(command_args_error) return b = command_args.behavior storage = Storage.get_current() if b is None: user_pref = await storage.get_pref(user=message.from_user.id) b = user_pref.get('on_watch', 'hide') await message.answer(f"current 'on watch' behavior is {b!r}") else: await asyncio.gather( storage.update_pref(user=message.from_user.id, on_watch=b), message.answer(f"new 'on watch' behavior was set: {b}"), )
async def set_search(message: types.Message): if message.text == 'Парня': search = 'мужской' elif message.text == 'Девушку': search = 'женский' elif message.text == 'Всё равно': search = 'любой' else: return message.answer('Не понял, так кого бы ты хотел найти?') await Profile.photo.set() await PG.add_user_info(message.chat.id, "search", search) await message.answer( 'Отправляй свою фотографию, ' 'которая будет у тебя в анкете.', reply_markup=types.ReplyKeyboardRemove())
async def answer_message(self, message: types.Message) -> List[types.Message]: if isinstance(self.loop, AbstractEventLoop): task_queue: TaskQueue = TaskQueue(self.loop) for item in self.get_block_list(): task_queue.add( message.answer(item, parse_mode=self.mode, disable_web_page_preview=True) ) return sorted(list(task_queue.get_result()), key=attrgetter('message_id')) message_list: List[types.Message] = [] for item in self.get_block_list(): message = await message.answer(item, parse_mode=self.mode, disable_web_page_preview=True) message_list.append(message) return message_list
async def logout_handler(message: Message): storage = Storage.get_current() trakt = TraktClient.get_current() queue = worker_queue_var.get() user_id = message.from_user.id action = asyncio.create_task(message.bot.send_chat_action(message.chat.id, 'typing')) creds = await storage.get_creds(user_id) if creds: sess = trakt.auth(creds.access_token) tasks = [ action, sess.revoke_token(), storage.finish(user=user_id), storage.remove_creds(message.from_user.id), message.answer("Successfully logged out."), ] if keys := await get_tasks_keys(queue, user_id): tasks.append(queue.delete(*keys)) await asyncio.gather(*tasks)
async def calendar_show_handler(message: Message, command_args): if not 1 <= command_args.days <= 7: await message.answer("invalid day offset, should in range [1, 7]") return user_id = message.from_user.id sess = await trakt_session(user_id) try: episodes = await sess.calendar_shows(command_args.date, command_args.days, extended=True) except TraktException: await message.answer(f"invalid date {command_args.date!r}") return text = render_html('shows_list', episodes=episodes) queue = worker_queue_var.get() tasks = [message.answer(text)] if command_args.schedule: service = NotificationScheduler(queue) tasks.append(service.schedule(sess, user_id, episodes)) await asyncio.gather(*tasks)
def wrapper(message: types.Message): if message.chat.type in RESTRICTED_CHAT_TYPES: return message.answer(ONLY_GROUPS_MESSAGE) return func(message)
async def command(message:types.Message): print(message.text) if(message.text == "Добавить книгу (только для администраторов)"): if(ch.FindByid(str(message.from_user.id))): cf.get_file = True cf.total_file = 4 await message.answer("Отправте файл.") else: await message.answer("У вас нет прав на это действие.") elif(message.text == "Удалить книгу (только для администраторов)"): if(ch.FindByid(str(message.from_user.id))): cf.del_file = True await message.answer("Введите название или id файла") else: await message.answer("у вас нет прав на это действие") elif(cf.total_file == 4): cf.path ="books\\"+message.document.file_name cf.filename = message.document.file_name await message.document.download("books\\"+message.document.file_name) await message.answer('Файл успешно сохранён. \n Теперь введите название для файла\n') cf.total_file -=1 elif(cf.total_file == 3): cf.bookname = message.text await message.answer("Название для файла добавлено. Теперь введите фио авторов через пробел") cf.total_file -=1 elif(cf.total_file == 2): cf.avtors = message.text await message.answer("Авторы добавлены. Теперь введите комментарий к файлу.") cf.total_file -=1 elif(cf.total_file == 1): await message.answer(dt.AppendToTable(cf.bookname,cf.path,cf.filename,cf.avtors,message.text)) cf.total_file = 0 cf.get_file = False elif(cf.del_file): data = dt.FindByAvtorOrNameOrID(message.text,message.text,message.text) if(len(data)>0): os.remove(data[0][2]) await message.answer(dt.DeleteFromTable(data[0][0])) else: await message.answer("Файл не найден.") cf.del_file = False elif(message.text == "Добавить админа (только для администраторов)"): if(ch.FindByid(str(message.from_user.id))): await message.answer("Введите id человека, которого нужно добавить к админам.") cf.addadmin = True else: message.answer("У вас нет прав на это действие") elif(message.text == "Удалить админа (только для администраторов)"): if(ch.FindByid(str(message.from_user.id))): await message.answer("Введите id человека, которого нужно удалить из админам.") cf.deladmin = True else: await message.answer("У вас нет прав на это действие") elif(cf.addadmin): if(ch.AppendToTable(message.text)): await message.answer("Админ добавлен.") else: await message.answer("Не удалось добавить админа.") cf.addadmin = False elif(cf.deladmin): if(ch.DeleteFromTable(message.text)): await message.answer("Админ удален.") else: await message.answer("Не удалось удалить админа.") cf.deladmin = False else: await message.answer("Я еще тупенький бот и не знаю много, поэтому я не понимаю вашу команду.",reply_markup=kb.StandartKeybord())