• Возможно ли на Пайтон написать достойное приложение Android?

    @peshenka
    Да, я torch
    Можно. Фреймворк добротный, жаль, что не очень популярный.
    И дока у него очень хорошая
    Ответ написан
    1 комментарий
  • Возможно ли на Пайтон написать достойное приложение Android?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Скажите насколько реально создать качественное приложение для Android на Python с kivy?
    Всё зависит от того, чем именно измерять качество.

    Или лучше другой язык изучить для этих целей? Порекомендуйте начинающему разрабодчику :-)
    С учётом того, что основным (я бы даже сказал "нативным") языком Android'а является Java - думаю, вряд программы на каком-то другом языке, будут настолько же качественными, насколько программы написанные на Java'е. И не по тому, что Python чем-то "хуже", а по тому, он не поддерживается платформой (по крайней мере, я о такой поддержке ни разу не слышал) "из коробки" и все программы написанные таким образом будут либо транслироваться в Java-код, либо работать через какую-то "прокладку", что в обоих случаях "качества" им не добавляет.
    Ответ написан
    5 комментариев
  • Почему при деплое heroku не видит библиотеку pywin32?

    @AWEme
    Retard Soft Inc.
    Есть подозрение, что библиотеки для Windows не очень любят работать из под линукса...
    Ответ написан
    Комментировать
  • Почему при деплое heroku не видит библиотеку pywin32?

    alfss
    @alfss
    https://career.habr.com/alfss
    Это расширение только для win32, а там nix* система
    Ответ написан
    Комментировать
  • Как настроить webhook для Telegram-бота (python3 + pyTelegramBotAPI) на хостинге Heroku?

    @johny2308
    уже запарились искать - столкнулись с такой же проблемой вот нашел решение - не помогло
    https://stackoverflow.com/questions/41681632/how-t...

    даже свой webhook создавали через хероку
    https://devcenter.heroku.com/articles/app-webhooks...

    бестолку )

    Давайте объединим усилия!
    Ответ написан
    Комментировать
  • Многоуровневое меню в Bot Telegram, как сделать кнопку назад?

    Danya_Violet
    @Danya_Violet
    CTO/CIO
    Inline keyboard
    @bot.callback_query_handler(func=lambda call: True)
    def callback_inline(call):
        if call.data == "comproxy":
            comproxy_keyboard = types.InlineKeyboardMarkup()
            call_button_comproxy_restart = types.InlineKeyboardButton(text="Restart", callback_data="comproxy_restart")
            call_button_comproxy_status = types.InlineKeyboardButton(text="Status", callback_data="comproxy_status")
            call_button_comproxy_back = types.InlineKeyboardButton(text="Назад", callback_data="back")
            comproxy_keyboard.add(call_button_comproxy_restart, call_button_comproxy_status)
            comproxy_keyboard.add(call_button_comproxy_back)
            bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Выберите:",
                                  reply_markup=comproxy_keyboard)
    
    ###
    
    
        elif call.data == "back":
            back_keyboard = types.InlineKeyboardMarkup()
            call_button_back_comproxy = types.InlineKeyboardButton(text="Comproxy", callback_data="comproxy")
            call_button_back_ser2net = types.InlineKeyboardButton(text="Ser2net", callback_data="ser2net")
            call_button_back_cups = types.InlineKeyboardButton(text="Cups", callback_data="cups")
            back_keyboard.add(call_button_back_comproxy, call_button_back_ser2net)
            back_keyboard.add(call_button_back_cups)
            bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                                  text='Чего изволите, господин?', reply_markup=back_keyboard)
    Ответ написан
    Комментировать
  • Как удалить сниппет из сообщения в телеграмм боте?

    @unfunk
    Используйте параметр disable_web_page_preview в send_message

    bot.send_message(message.chat.id, answer, parse_mode='Markdown', disable_web_page_preview=True)
    Ответ написан
    1 комментарий
  • Как сделать многоуровневое меню телеграм бота ( inline - callback) на python?

    @manvalit
    Это делается простым изменением сообщения. После этого вставляем другую клавиатуру, подробно можете узнать здесь: https://groosha.gitbooks.io/telegram-bot-lessons/c...
    Если всё же вы не могли понять, то напишите - объясню.
    Ответ написан
    1 комментарий
  • Если Телеграмм бот получает сообщение в тексте, которого есть "*", то выдает ошибку. Как исправить?

    @AlmazKayum
    была подобная ошибка, он реагирует на разметку markdown.
    если разметка нужна, поменяй на html.
    если не нужна - отключи.
    Ответ написан
    Комментировать
  • Как подключить телеграм бота python?

    @be52
    #! /usr/bin/python3
    # -*- python -*-
    # -*- coding: utf-8 -*-
    #
    # sudo apt install python3-pip
    # sudo pip3 install python-telegram-bot --upgrade
    #
    
    
    from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
    from telegram import InlineKeyboardButton, InlineKeyboardMarkup
    from telegram.ext import CallbackQueryHandler
    import logging
    import _thread, time
    import configfile as cfg
    
    
    TOKEN = cfg.token
    USERID = cfg.userid
    
    
    # в интернет через ТОР, в системе должен быть установлен TOR тк в РФ телеграм заблокирован
    REQUEST_KWARGS={
        'proxy_url': 'socks5://127.0.0.1:9050'
    }
    
    #можно включить режим отладки, будет писать в сислог и в консоль
    #logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.DEBUG)
    logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
    #можно писать в свой лог в файл
    #logging.basicConfig(filename = cfg.log_file2, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
    
    
    
    #
    # обработчики команд, вызываются при получении команды
    #
    #
    
    def start(bot, update):
    	"""вызывается по команде /start
    	"""
    	bot.send_message(chat_id=update.message.chat_id, text = '*Привет!*', parse_mode='Markdown')
    	
    	keyboard = [[InlineKeyboardButton("Option 1", callback_data='1'),
    				 InlineKeyboardButton("Option 2", callback_data='2')],
    				[InlineKeyboardButton("Option 3", callback_data='3')]]
    	reply_markup = InlineKeyboardMarkup(keyboard)
    	update.message.reply_text('Please choose:', reply_markup=reply_markup)
    	
    
    def check_for_updates(bot, job):
    	"""вызывается по таймеру периодически
    	
    	"""
    	bot.send_message(chat_id=USERID, text = 'тик так', disable_notification=True)
    	job.interval += 1
    	pass
    
    
    def echo(bot, update):
    	"""вызывается любым текстом от собеседника, но не командой файлом итп
    	отвечает эхом
    	"""
    	t=update.message.text
    	bot.send_message(chat_id=update.message.chat_id, text = t)
    	
    
    def caps(bot, update, args):
    	"""команда с аргументами /caps привед медвед
    	"""
    	text_caps = ' '.join(args).upper()
    	bot.send_message(chat_id=update.message.chat_id, text=text_caps)
    	
    
    def button(bot, update):
    	"""Обработчик нажатий на кнопки, для всех кнопок один обработчик
    	который получает имя кнопки на которую было нажатие (query.data)
    	"""
    	query = update.callback_query
    	
    	bot.edit_message_text(text="Selected option: {}".format(query.data),
    						  chat_id=query.message.chat_id,
    						  message_id=query.message.message_id)
    
    
    def watch_files_thread(bot, job):
    	"""Бесконечный цикл в котором можно делать всё что угодно
    	"""
    	while True:
    		time.sleep(10)
    		bot.send_message(chat_id=USERID, text='123')
    	
    	
    def watch_files(bot, job):
    	"""Запускается ботом 1 раз и тут же запускает в фоне функцию которая будет работать отдельно от бота
    	в этой функции можно прописать любое расписание и любые действия никак не связанные с событиями в боте
    	"""
    	_thread.start_new_thread(watch_files_thread, (bot, job))
    
    
    def f1():
    	#создаем бота и обработчик команд
    	updater = Updater(token = TOKEN, request_kwargs = REQUEST_KWARGS)
    	dispatcher = updater.dispatcher
    	#обработчик команды start
    	start_handler = CommandHandler('start', start)
    	dispatcher.add_handler(start_handler)
    	#обработчик команды с параметрами
    	caps_handler = CommandHandler('caps', caps, pass_args=True)
    	dispatcher.add_handler(caps_handler)
    	#добавляем регулярное задание, интервал в секундах, начать немедленно
    	#t=(6*60*60)
    	job = updater.job_queue
    	t=10
    	job_minute = job.run_repeating(check_for_updates, interval=t, first=0)
    	#запускаем в фоне функцию работающую отдельно от бота, задежка запуска 0 секунд
    	job.run_once(watch_files, 0)
    	#добавляем обработчик текстовых сообщений
    	echo_handler = MessageHandler(Filters.text, echo)
    	dispatcher.add_handler(echo_handler)
    	#обработчик кнопок
    	dispatcher.add_handler(CallbackQueryHandler(button))
    	#запускаем главный цикл
    	updater.start_polling()
    
    
    if __name__ == '__main__':
    	f1()
    Ответ написан
    Комментировать
  • Как из MessageEntity достать нужные данные(Telegram bot, Python)?

    Bobsans
    @Bobsans
    Full-Stack Developer
    Попробуй
    print(call.message.json.get('entities')[0].offset)
    или
    print(call.message.json.get('entities')[0].get('offset'))
    Ответ написан
    2 комментария
  • Python: Почему время выдает не в нужном формате?

    @KhD
    Вы забыли скобки при вызове функции.
    Ответ написан
    Комментировать