• Как проверить существование chat_id при отправке сообщений телеграм боту?

    dabudi
    @dabudi
    2*2=5
    Проверить юзера на его присутсвие в боте можно только через рассылку

    count = 0
    errors = 0
    
    with sq.connect('base.db') as con:
        cur = con.cursor()
        cur.execute('''SELECT userid FROM users''')
        AllUser = cur.fetchall()
        
    start_time = time.time()
    for s in range(len(AllUser)):
        user_id = AllUser[count][0]
        try:
            bot.send_message(user_id, text='Текст для рассылки')
            count += 1
        except:
            count += 1
            errors += 1
            with sq.connect('base.db') as con:
                cur = con.cursor()
                cur.execute('''DELETE FROM users WHERE userid=?''', (user_id,)) # поймали ошибку на айди юзера и удалили его из базы
            
    allusers = int(len(dataid))
    
    goodresult = allusers - errors
    
    goodresult = str(goodresult)
    
    errors = str(errors)
    
    times = "Время выполнения: %s сек." % round((time.time() - start_time))
    
    sms = 'Рассылка завершена!'+'\n'+ 'Успешных результатов: '+goodresult+'\n'+'Ошибок: '+errors+'\n'+str(times)
    bot.send_message(твой_айди, sms)# сюда придет уведомление о результатах рассылки
    Ответ написан
    Комментировать
  • Как проверить существование chat_id при отправке сообщений телеграм боту?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    При отправке в такой чат происходит исключение (сервер возвращает ошибку), его надо поймать и обработать (удалить из базы этот чат, например), тогда скрипт падать не будет.
    Ответ написан
    Комментировать
  • Чем заменить событие toggle на jquery чтобы по клику и повторному клику можно было производить два разных действия?

    @Ridz
    $.fn.oldtoggle = function () {
        var b = arguments;
        return this.each(function (i, el) {
           var a = function () {
                var c = 0;
                return function () {
                    b[c++ % b.length].apply(el, arguments)
                }
            }();
            $(el).click(a)
        })
    };
    $('#btn').oldtoggle(function(){
        $('#id1, #id4, id5, #id8').hide();
    }, function() {
        $('[id^=id]').show();
    );
    Ответ написан
    Комментировать
  • Когда в PHP использовать интерфейсы, а когда абстрактные классы?

    try4tune
    @try4tune
    С точки зрения архитектуры:

    Интерфейс описывает свойства. Обратите внимание на классические названия интерфейсов: Throwable, Countable, Comparable, Iterable и т.д. Возьмем, к примеру, интерфейс Rollable (катящийся), и Foldable (складывающийся).

    Абстрактный класс же описывает сущность. Например, стол: Table_Abstract. Стол может быть деревянным, тогда будет Table_Wood extends Table_Abstract. Также стол может быть хирургическим: Table_Surgical extends Table_Abstract. В таком случае Table_Abstract объединяет общий свойства всех столов (скажем, площадь поверхности, наличие ножек и т.п.). А конкретный класс описывает сущность определенного типа столов.

    Связью же интерфейсов и классов Вы описываете свойства. Например, стол можно катить: Table_Abstract implements Rollable. Деревянный стол, например, можно сложить: Table_Wood implements Foldable.
    Ответ написан
    5 комментариев
  • Ruby или Python или может Java?

    @FoxInSox
    1C, конечно.
    Ответ написан
    Комментировать