Судя по-всему ситуация такая:
у вас несколько хендлеров, каждый из которых проверяет наличия юзера в чате.
@client.message_handler(commands = ['start'], func=check)
@client.message_handler(content_type= ['text'], func=check)
и т.д.
Пользователь присылает сообщение. Срабатывает проверка в первом хендлере. Во время этой проверке выясняется, что пользователь не состоит в чате, ему отправляется сообщение и возвращается False.
Из-за того, что первый хендлер не сработал, срабатывает проверка в следующем. И ситуация повторяется.
Как вариант, можно сделать следующее:
Насколько я понимаю, бот не должен ничего делать, если пользователь не состоит в чате.
Делайте отдельный хендлер с проверкой на то, то пользователь НЕ состоит в чате.
def check(message):
    if client.get_chat_member(channel_chat_id,  message.chat.id).status in need_status:
        return False
    else:
        return True
@client.message_handler(content_types=['text'], func=check)
def access_denied(message):
    client.send_message(message.chat.id, subscribe_error_msg)
И этот хендлер надо поставить выше всех остальных, тогда он будет ловить вообще все сообщения самым первым. Если пользователя нет в нужном чате, он срабатывает, пишет что проверка не пройдена и все,  другие хендлеры работать не будут.
Думаю, суть понятна.