Beispiel #1
0
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}!')
Beispiel #2
0
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")
Beispiel #3
0
    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
Beispiel #4
0
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."),
        )
Beispiel #5
0
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,
        ))
Beispiel #6
0
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
Beispiel #8
0
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))
Beispiel #9
0
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"
        )
Beispiel #10
0
    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
Beispiel #11
0
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):
Beispiel #12
0
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))
Beispiel #13
0
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
Beispiel #14
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
Beispiel #15
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())
Beispiel #16
0
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}"),
        )
Beispiel #17
0
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())
Beispiel #18
0
    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
Beispiel #19
0
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)
Beispiel #20
0
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)
Beispiel #22
0
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())